症狀
假設您使用 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 累積更新中修正:
注意: 使用此修正程式之後,當鎖死可以在不終止執行緒的情況下解決鎖死時,不會報告查詢內鎖死的 xml_deadlock_report 事件。
關於 SQL Server 的累積更新:
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。