web-dev-qa-db-ja.com

SQL Server 2014でのデッドロックの監視

SQL Server 2014でデッドロックが発生しており、できる限り多くの情報を収集しようとしています。

Xml_deadlock_reportイベントをキャプチャする拡張イベントセッションがすでにあり、SSMSでデッドロックグラフを確認できます。

現在、このSQL Serverで有効になっているトレースフラグはありません。フラグ1204および1222を有効にすると、追加情報の取得に役立ちますか?これらのフラグは拡張イベントには適用されないようですが、100%確実ではありません。

2
Joe Schmoe

トレースフラグ1204および1222を追加しても、SQL Server 2014エディションで追加情報を取得するのに役立ちません。

XEトレースでトレースフラグを使用する理由が誰かに考えられる場合は、#sqlhelpハッシュタグを使用してTwitterでも質問しました。私が受け取った回答、拡張イベントはトレースフラグを使用するよりも優れています。トレースフラグは、従来の目的でのみ使用してください。

1
SqlWorldWide

デッドロックグラフがあれば、かなり多くの情報が得られます。デッドロックグラフを読み取るには、もう少しスキルが必要です。しかしあまりありません。グラフはデッドロックとは何かを示しています。それは、2台の車がまったく同じ場所で通りを渡って駐車場に入るために道路を横断する必要があるポイントにいるときのようなものです。それぞれが左折したいとします。 B車が邪魔をしているので、A車は左折できません。 A号車が邪魔をしているため、B号車は左折できません。

SQL Serverは、車の1つを少し移動したり、他の車を運転したりする代わりに、車の1つを爆破します。

しかし、私は余談です。デッドロックグラフ情報とデッドロックレポートの残りの情報は、各セッションがどのオブジェクトをロックしたか、どのタイプのロックが行われたか、および他のロックが必要かどうかを示します。

いくつかのクエリ情報が表示される場合がありますが、いくつかの情報には依存しない場合があります。ただし、状況を再現できる場合は、拡張イベントセッションまたはクエリの受信を監視するサードパーティツール(Sentry One、Idera DMまたはSolar Winds)などのツールからクエリ情報の一部をキャプチャできますDPAはクエリが発生するたびにすべてを表示するはずです-そしてほとんどは無料の試用期間があります。Sentryには独自のデッドロックグラフさえあります。

1
Mike Walsh