0

WITH (NOLOCK)特定の大規模なストアド プロシージャ内のすべての SQL クエリで使用したい場合、特定のすべてのストアド プロシージャ ステートメントに対してそれを使用する一般的な方法はありますか、またはWITH (NOLOCK)個々のクエリごとに使用する必要がありますか?

4

2 に答える 2

9

トランザクション分離レベルを設定できます

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED

ただし、NOLOCK は、クエリがダーティまたは重複したデータを返す可能性があること、またはデータを完全に見逃す可能性があることを忘れないでください。それがオプションである場合は、READ_COMMITTED_SNAPSHOT データベース オプションを調査して、一貫した結果のクエリを返しながらロックの問題を回避できるようにすることをお勧めします。

于 2012-04-08T12:09:05.870 に答える
4

次の構文を使用します。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

ここにある NOLOCK テーブル ヒントを見てこれを見つけました: http://msdn.microsoft.com/en-us/library/ms187373.aspx。WITH(NOLOCK) テーブル ヒントは、分離レベルを READ UNCOMMITTED に設定することと同じです。MSDN のスニペットは次のとおりです ( http://msdn.microsoft.com/en-us/library/ms187373.aspx ):

NOLOCK READUNCOMMITTED と同等です。詳細については、このトピックで後述する READUNCOMMITTED を参照してください。

于 2012-04-08T12:16:35.357 に答える