BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
編集
他の人が指摘したように、行を読み取らないようにロックすることはできません .私が知っている唯一の方法は次のとおりです:
WITH (UPDLOCK, TABLOCK)
これは、WITH (NOLOCK) が SELECT ステートメントで使用されていないことを前提としています (とにかく避ける必要があります)。
TABLOCK は極端な場合にのみ使用する必要がありますが、これをテストしたところ動作します。確かに、並行性が必要な場合、それは悪い解決策であり、他の形式のロックが必要になります。 1 つの方法は、ビット列 "Available True/False" を更新し、Available =True の行のみを読み取ることです。 @gbn が提案したように、READPAST できる