晴耕雨読

working in the fields on fine days and reading books on rainy days

[SQLServer] テーブルをロックしているセッションを特定するSQL

ここでは、SQL Server で特定のテーブルをロックしている全ての接続元セッションを切断する方法について説明します。

SQL Server と接続しているとき、デッドロックなどの何らかの理由でテーブルにロックをかけたまま解放しない事象が発生することがあります。 そのときは、以下のSQLでロックしているセッションを特定し、そのテーブルをロックしているセッションを終了 (kill) させる必要があります。

SELECT Object_name(t2.object_id) AS tableName,
       resource_type             AS type,
       request_session_id        AS sessionId
FROM   sys.dm_tran_locks t1
       INNER JOIN sys.partitions t2
               ON t1.resource_associated_entity_id = t2.hobt_id
WHERE  Object_name(t2.object_id) = 'テーブル名'; -- ここに接続を切りたいテーブル名を記述する


kill セッションID;  -- 上記のSQLで特定したセッションを終了する

以上です。


類似記事