現象
Microsoft SQL Server 2016 および2017を使用していることを前提としています。 デッドロックのデータを収集するためにイベントxml_deadlock_report を有効にした場合、1つのクエリ内デッドロックの発生について多くの xml_deadlock_report イベントが報告されます。
回避策
この問題の回避策として、次の例に示すように、 xml_deadlock_reportの代わりに filter error_number = 1205を使って error_reported XEvent を収集できます。
サーバー上のイベントセッション [Deadlock_Collection] を作成する
イベント sqlserver.error_reported を追加します (
WHERE ([error_number] = (1205)))
ターゲット package0 の追加 (filtering_event_name = N ' sqlserver.lock_acquired '、source = N ' sqlserver.query_hash ')
使用時間 (MAX_MEMORY = 4096 KB、EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS、MAX_DISPATCH_LATENCY = 30 秒、MAX_EVENT_SIZE = 0 KB、MEMORY_PARTITION_MODE = なし、TRACK_CAUSALITY =、STARTUP_STATE = オフ)
いく
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで修正されています。
SQL Server 2016 SP2 の累積更新プログラム2
ノートこの修正によって、スレッドを強制終了せずにデッドロックを解決できる場合、クエリ内デッドロックの xml_deadlock_report イベントは報告されません。
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
ソフトウェアの更新を説明するために Microsoft が使用する 用語について説明します。