查找一天前在SQL Server中发生的死锁详细信息

时间:2014-04-08 02:55:18

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

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

1 个答案:

答案 0 :(得分:2)

我使用这个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)