- - PR -
デッドロックの調査について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-22 22:27
表題の件で質問があります。
あるシステムでDBのデッドロックが発生し どのSQLでデッドロックになってしまったのかを 調査したいと思っております。 (デッドロックはExceptionメッセージを ログに出力するようにしていた為分かりました) SQL Serverのログ情報に残っていないか 確認しましたが見当たらず、何かオプションを 設定することによって出力されるのではないかと 思い、調べていましたところ http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2005/06/28/22.aspx で、「トレースフラグ1204が吐き出す情報を解析する」に行き当たりました。 デッドロックに関するレポートが起動したコンソールに返され,エラーログに記録 されるということなのですが、コンソール起動しないでログのみに出力することは 可能なのでしょうか? どなたかご存知の方がおられましたらご教授宜しくお願い致します。 ================================== テスト環境: Windows2000 Pro SQL Server2000 .NET2003 VB ADO.NET ASP.NET | ||||
|
投稿日時: 2005-08-22 22:54
お疲れ様です。 マミさんが参照された記事を書きました TLC です。 さて本題ですが, 結論から言うと可能です。 最も簡単なのが, EnterpriseManager でトレースを取得したいデータベースのプロパティを表示します。 [SQL Server のプロパティ(設定)]というダイアログが表示されますので, これの[全般]タブに[起動時のパラメータ]という設定があります。 T1204 トレースフラグは単なる起動時のオプションですから, ここに [-T1204] というエントリを追加してあげて「サービスの再起動」 をしてあげればトレースフラグを取得する状態で SQL Server が起動します。 この状態でデッドロックが発生すれば,SQL Server ログにダンプが記録されることになります。 これで目的は達成できます。 ■ただし,この方法はあまりお勧めいたしません。 -T1204 オプションは再起動しなければなりませんので, クリティカルな運用データベースに適用するべきではないと考えます。 代わりに, [SQL プロファイラ]を用いて, トレースするイベントにデッドロック関係のイベントを追加して監視してはいかがでしょうか? これならば,好きなときに監視を開始して必要な情報を取得できたらプロファイラを停止するだけですみます。 ご検討ください。 ---------- TimberLandChapel http://blogs.timberlandchapel.com/blogs/timberlandchapel/ | ||||
|
投稿日時: 2005-08-22 23:03
-T の効果を永続化したいだけなら dbcc traceon を使えばいいんじゃないの。
dbcc traceon(1200, 1204, 1205, 3604) くらいやっとけばなんとかなると思う。 トレースフラグ 1200 ロック情報を出力します。 1204 デッドロックに関係するロックのタイプと影響を受ける現行コマンドを戻します。 1205 デッドロック時に実行中のコマンドに関する詳細情報を戻します。 3604 トレース出力をクライアントに送信します。 デッドロックではなくロック全般によるブロッキング状況について調べるなら、 [INF] SQL Server 2000 のブロッキングを監視する方法 が参考になると思う。 | ||||
|
投稿日時: 2005-08-22 23:51
>trace on ごもっともです。 >[inf] 一応,トレースフラグ解析の元ネタというか MS サイトの記事はこちらの沖さんのコラム記事です。 http://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.asp | ||||
|
投稿日時: 2005-08-23 09:07
>TLCさん、未記入さん
おはようございます。早々のご回答ありがとうございます。 早速traceonを設定し、 http://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.asp 上記サイトにある「3.2 デッドロックの問題」を試してみた結果、 ログにデッドロックの情報が出力されている事が確認できました。 これでしばらく様子を見たいと思います。 #提示して頂きましたサイト、大変勉強になりました。ありがとうございました。 |
1