ほとんどの場合、共有ロックはに発行されます。TableB
これは、を実行した場合と同じタイプのロックですSELECT
。ただし、取得するロックの特定のタイプ、およびロックの期間は個々のシナリオによって異なるため、次の検証を実行して、質問に対する正確な回答を取得する必要があります。
まず、SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
。これにより、トランザクションが完了するまで共有ロックが保持されます。これは、読み取り中の読み取り中にのみ保持されるのではありませんREAD COMMITTED
。
後でどのロックが発行されたかを調べることができるように、分離レベルを上げています...しかし、このため、本番システムでこのテストを実行することはおそらく望ましくありません。
次に、BEGIN TRANSACTION
。
次に、問題のDELETE
コマンドを発行します。
ここで、を確認しsys.dm_tran_locks
ます。SELECT
この回答では、@MartinSmithによって提供されたステートメントを使用することを強くお勧めします。
最後に、COMMIT
またはROLLBACK
トランザクションを閉じてロックを解除します。
SELECT
使用の結果は、sys.dm_tran_locks
取得されたロックのタイプ、およびそれらが取得されたオブジェクトの詳細を示します。