【问题标题】:Find Deadlock details happened one day ago in SQL Server在 SQL Server 中查找一天前发生的死锁详细信息
【发布时间】:2019-01-04 18:23:16
【问题描述】:

一位用户报告了一个 SQL Server 机器中的死锁错误(他可能在某些应用程序日志中发现了该错误)。无论如何,我需要找出这个死锁的详细信息,但我从未启用任何跟踪标志,如 1204 和 1222。SQL Server 默认情况下会记录死锁吗?我可以在某处找到有关该死锁的详细信息,还是必须启用跟踪标志然后等待死锁再次发生?

【问题讨论】:

标签: sql sql-server sql-server-2008-r2


【解决方案1】:

我使用这个 sql 来获取所有的死锁。

DECLARE @xml XML

SELECT @xml = target_data
FROM   sys.dm_xe_session_targets
JOIN sys.dm_xe_sessions
ON event_session_address = address
WHERE  name = 'system_health' AND target_name = 'ring_buffer'

SELECT CAST(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') AS XML)
FROM   (SELECT @xml AS TargetData) AS Data
CROSS APPLY TargetData.nodes ('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData (XEvent)

【讨论】:

  • 它是由SQL Server默认重新编码的,这个sql可以在任何数据库中执行,因为它是服务器级别的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2011-08-10
  • 2018-10-13
  • 2020-02-05
  • 1970-01-01
相关资源
最近更新 更多