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

SQL Server 2000/2005 では、ロック待ちのブロックされたプロセスは、KB 271509(マイクロソフト サポート技術情報の文書番号 271509)で提供される「sp_blocker_pss80」ストアド プロシージャを利用して確認することもできます。


KB 271509: SQL Server 2005 および SQL Server 2000 のブロッキングを監視する方法
http://support.microsoft.com/kb/271509/ja

このページに表示されるスクリプトをコピーして、それをクエリアナライザへ貼り付けて実行すると、sp_blocker_pss80 ストアドプロシージャを作成できます。

作成後、クエリアナライザの[クエリ]メニューから[結果をテキストで表示]をクリックして、次のように実行します。

master..sp_blocker_pss80

これで、ロック待ちに関する情報を取得することができます。sp_who の blk 列や sp_lock と同等の情報(syslockinfo)、実行されていた SQL ステートメントなどをまとめて確認できるので大変便利です。
なお、sp_blocker_pss80 は、ロック待ちが発生していない場合には結果を返しません(ブロッキング状態のみを監視することができます)。


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