KB4338715 - 修正:在 SQL Server 2016 和 2017 中,針對單一查詢內鎖死事件報告許多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 (
  • WHERE ([error_number]= (1205) ) )
  • ADD TARGET package0.histogram (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 累積更新中修正:

SQL Server 2017 累積更新 10

SQL Server 2016 SP2 的累積更新 2

注意: 使用此修正程式之後,當鎖死可以在不終止執行緒的情況下解決鎖死時,不會報告查詢內鎖死的 xml_deadlock_report 事件。

關於 SQL Server 的累積更新:

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

適用於 SQL Server 2017 的最新累積更新

適用於 SQL Server 2016 的最新累積更新

狀態

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

參考資料

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