Applies ToSQL 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而不是 xml_deadlock_report 来收集 error_reported XEvent 如以下示例所示:

在服务器上创建事件会话 [Deadlock_Collection]

添加事件 sqlserver.error_reported (

WHERE ([error_number] = (1205))

添加目标 package0 (SET filtering_event_name = N "sqlserver.lock_acquired",source = N "sqlserver.query_hash")

WITH (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 2017 的累积更新10

       SQL Server 2016 SP2 的累积更新2

提示使用此修补程序时,如果在不终止线程的情况下可以解析死锁,则不会向查询内死锁报告任何 xml_deadlock_report 事件。

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的 术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。