KB4338715 - 修正:2016 和 2017 SQL Server,單一查詢內死結事件報告了許多xml_deadlock_report事件

套用到
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise

症狀

假設你使用的是 Microsoft SQL Server 2016 和 2017。 如果你啟用事件 xml_deadlock_report 來收集死結資料,就會因為單一查詢內的死結事件而報告許多 xml_deadlock_report 事件。

因應措施

作為解決這個問題的替代方案,你可以用濾波 器 error_number = 1205 來收集 error_reported XEvent,而非 xml_deadlock_report, 如下範例所示:

注意

  • 在伺服器上建立事件會話 [Deadlock_Collection]
  • 新增事件sqlserver.error_reported (
  • 其中 ([error_number]= (1205) ) )
  • ADD TARGET PACKAGE0.直方圖 (SET 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=關閉)
  • GO

解決方式

此問題已在以下 SQL Server 的累積更新中得到修正:

累積更新10 for SQL Server 2017

Cumulative Update 2 for SQL Server 2016 SP2

註: 此修正後,當死結可解決且不終止執行緒時,查詢內死結不會報告 xml_deadlock_report 事件。

關於 SQL Server 的累積更新:

每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:

SQL Server 2017 最新累積更新

SQL Server 2016 最新累積更新

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語