使用シナリオについてはあまり具体的ではありませんが、テーブルからデータを取得することは可能です。いくつかの重大な警告があります。
marc_s が言ったように、スナップショット分離レベルを使用できます。これは、トランザクション内のすべての選択ステートメントでREAD UNCOMMITTED
使用するのと同じ効果があります。WITH (NOLOCK)
そのテーブルだけを読み取りたいが、トランザクション内の他のすべての読み取りを通常どおりに処理する場合はNOLOCK
、クエリ内の特定のテーブルにヒントを配置することをお勧めします。たとえば、次のようになります。
SELECT *
FROM firstTable f INNER JOIN
secondTable s WITH (NOLOCK) on f.Key = s.Key
これは通常の読み取りロックを発行しますfirstTable
が、ロックなしで読み取りますsecondTable
。事実上破損したデータを取り出すことができるため、ロックは非常に危険ではありません。実行中の挿入によってデータが並べ替えられ、ページ分割が発生した場合、同じ行が 2 回出力され、あらゆる種類の同様の不快感が発生する可能性があります。
可能ですが、理想的ではなく、影響に注意する必要があります。Jason Strate の厚意により、さらに詳しい資料がここにあります。