現場で、デッドロックが発生してその対処をしている。 RDBMSによって分析・対処の方法は異なるが、今回はSQLServer2005で行った。 SQLServer2005およびSQLServerProfilerの強力さを改めて思い知った。 デッドロックの検知 デッドロックが発生したことは、アプリケーションのExceptionで判明したのだが、 具体的にどの操作と、どの操作が関連しているか調べなくては再現ができない。 それを調べるために、SQLServerのエラーログにDeadLockの情報をトレースする仕組みがある。 以下のトレースフラグ「1204」と「3605」をOnにするのだ。 トレースフラグ:1204 デッドロックに関係しているロックのリソースと種類、および影響を受けている現在のコマンドを返します。デッドロック検出アルゴリズムによってデッドロックが検出された場合に、プロセスとリソースに
![SQLServerProfilerでデッドロックの図示 - レベルエンター山本大のブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/0907cfb7b23fbeccf6ed45dcbd9c36f11ac9ddf5/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fi%2Fiad_otomamay%2F20080307%2F20080307134622.jpg)