トレースフラグ1222が機能していませんか?


8

同様に構成された2つの2008r2 SQL Server "A"と "C"を使用する顧客サイトがあります。両方のサーバーで、トレースフラグ1204および1222が有効になり、DBCC tracestatus両方のサーバーで次のように表示されます。

TraceFlag   Status  Global  Session
1204        1       1      0
1222        1       1      0
3605        1       1      0

Aでは、トレースフラグは期待どおりに機能し、デッドロックが発生すると、エラーログに1204と1222の両方のデッドロックレポートが記録されます。ただし、Cでは、1204レポートのみが表示され、1222レポートは取得されません。

私の人生では、この違いの理由はまったくわかりません。私はこれを広範囲にグーグルで調べ、これらのトレースフラグに関するMSドキュメントを読んだ(そして再度読んだ)ので、このような動作のレポートも、何が原因であるかについてのヒントも見つかりません。近づく唯一のことは、どちらのトレースフラグも機能していないという時折の主張ですが、これらはすべて、有効化コマンドにタイプミスがあった場合のケースであることが判明しました。DBCC TRACESTATUSを使用して確認しているため、これは当てはまりません。

そのため、トレースフラグ1222 のみが機能しない原因となる可能性のある原因、および/またはそれを修正する方法についての洞察は、高く評価されます。


さて、ここに興味深い展開があります。自分でデッドロックを生成するたびに(このコードを使用:https : //stackoverflow.com/questions/7813321/how-to-deliberately-cause-a-deadlock)、両方のトレースレポートがエラーログに記録されます。デッドロックレポートの1つのみをトリガーするように見えるのは、アプリケーションから数日ごとに発生する「自然な」デッドロックだけです。これが役立つかどうかはわかりませんが、トレース1222が1204と同じデッドロック状態のすべてについて報告しないと考える理由はありますか?


1
確かに可能ですが、すべてのサーバーは既にこのように設定されています。これだけを正しく動作させることができれば、すべてを変更する必要はありません。両方を使用しないことについても可能ですが、現時点では、1204がCでデッドロックが発生し、1222がそれを報告しないことを知っていた唯一の方法です。
RBarryYoung 2014年

2
SQL 2008 xml_deadlock_report ですでにデッドロックのトレースフラグを有効にしている理由はわかりませんsystem_health session。詳細については、この投稿を確認してください。デッドロックが表示されるかどうかを確認してください。
Kin Shah

4
@Kin system_healthの組み込みデッドロックレポートの大きな欠点の1つは、sql_textが含まれていないため、関連するクエリ/オブジェクトのトラブルシューティングが困難な場合があることです。
アーロンバートランド

4
@AaronBertrand 2008R2 RTMで試したところ、SQLテキストとオブジェクト名が表示されました<inputbuf> BEGIN TRAN UPDATE dbo.DeadLockTest2 SET col1 = 1 UPDATE dbo.DeadLockTest SET col1 = 1 </inputbuf>mode="X" associatedObjectId="72057594039107584"。何か不足していますか?私が使用したSELECT CAST(xet.target_data AS XML) AS XMLDATA FROM sys.dm_xe_session_targets xet JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) WHERE xe.name = 'system_health'
Kin Shah

1
@kin system_healthを使用したクエリのカットオフを見てきました。痛みです。

回答:


1

私は同様の問題を抱えていましたが、それがあなたの問題を分類するかどうかはわかりません。

これを試して:

EXEC master..sp_altermessage 1205, 'WITH_LOG', TRUE;
GO

トレースフラグを介してイベントログに記録されていたとしても、電子メールをトリガーするために設定する必要があります。あなたはここにテーブルを見ることができます:

select * from master.sys.messages
where text like '%deadlock%'

ここで詳細を確認できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.