SQL Server でデッドロックを監視するには

SQL Serverデッドロックを監視するには、次の 3つの方法があります。

  1. SQL Server Profiler の DeadLock Graph イベントクラスを利用
  2. SQL Server Profiler の Lock:DeadLock Lock:DeadLock Chain イベントクラスを利用
  3. トレース フラグ 1204 を利用

SQL Server Profiler(プロファイラ)の DeadLock Graph を利用すれば、グラフィカルにデッドロックを監視できます(SQL Server 2005 からの新機能)。Lock:DeadLock Lock:DeadLock Chain イベントクラスを利用する場合は、Lock:DeadLock がデッドロック発生時、Lock:DeadLock Chain がデッドロックに関係のあったプロセスごとの情報を取得できるようになります(これは SQL Server 7.0/2000 でも利用できます。もちろん、SQL Server 2005/2008 でも利用できます)。


トレース フラグ 1204 は、SQL Server の起動オプションで有効にするか、次のように DBCC TRACEON コマンドで有効化できます。

DBCC TRACEON (1204,-1)

このコマンドは、SQL Server を起動している間、有効です。これを有効化しておくと、デッドロックの発生時に SQL Server のログに記録されるようになるので、Management Studio の「管理」フォルダの「SQL Server ログ」からデッドロックに関する情報を確認できるようになります。


なお、設定されているトレース フラグを確認するには、次のように DBCC TRACESTATUS コマンドを実行します。

DBCC TRACESTATUS

トレース フラグを無効化したい場合は、次のように DBCC TRACEOFF コマンドを実行します。

DBCC TRACEFF (1204,-1)


プロファイラのイベントクラスの詳細(ヘルプ)はこちら
http://msdn.microsoft.com/ja-jp/library/ms177493.aspx

トレース フラグの詳細(ヘルプ)はこちら
http://msdn.microsoft.com/ja-jp/library/ms188396.aspx