SQL Server で「sp_lock」でロック待ちのプロセスをリストアップする(ロックの監視)

SQL Server 7.0/2000/2005 では、ロック待ちのブロックされたプロセスは、「sp_lock」システム ストアド プロシージャを利用して確認することができます(以下の画面は SQL Server 2000 のクエリ アナライザの例)。

WAIT と表示されるのがロック待ちが発生しているプロセスです。データベースID(dbid 列)に対応したデータベース名は DB_NAME 関数、オブジェクトID(ObjId 列)に対応したテーブル名は OBJECT_NAME 関数、インデックスID(IndId 列)に対応したインデックス名は sysindexes システムテーブルから取得できます。


ただし、sp_lock ではブロッキングに関する情報が表示されないので、これは「sp_who」システム ストアド プロシージャを使って取得します。

ロック待ちが発生している場合は、blk 列にブロックしている側のプロセスID が表示されます。


その他のロックの監視方法についてはこちら
http://d.hatena.ne.jp/matu_tak/20091104/1257415210