2006.06.09

クエリアナライザによるプロセス操作

開発で主に使用している SQL Server の話です。
開発はたいてい複数人で同じDBを使用します。そのため、テスト中バグによりロックが開放されないままのこってしまう場合があります。そうなると、ロックされているデータを更新するプロセスは軒並み開放待ちで待たされてしまいます。
通常はEnterpriseManagerで「現在の使用状況」で問題のプロセスを強制終了させて回復するのですが、まれにEnterpriseManagerすら開けなくなる状況が発生します。
そんなときはクエリアナライザで接続して以下のコマンドで他のプロセスをブロックしているロックを確認します。

sp_who

「blk」列がそのプロセスをブロックしているプロセスIDです。そのプロセスIDを指定して以下のコマンドで問題のプロセスを終了させることができます。

kill spid

Oracle と違い SQL Server の場合GUIがそこそこ使いやすいので、管理系のコマンドはとんと疎いのですが、MCPの試験にはこのコマンドがよくでるようです。実際これでサービス再起動を免れた経験もありますのでMCP試験もあながち無駄ではなかったと思います。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin