Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
当我的一个网站很忙的时候,我会随机地得到这个错误。我大致知道发生在哪组表上,但根据我对其他程序的经验,我通常会在死锁发生的地方得到返回的SQL。我应该打开旗子让这一切发生吗?
我将尝试将死锁本身调试为单独的问题,因为这是我目前的主要问题。
我正在使用Server 2008标准版。
发布于 2017-07-31 21:58:31
接受答案并没有一直对我起作用。显然,在某些情况下,环形缓冲器可以丢弃事件。
可以解析system_health日志事件文件(来自这个答案):
with XmlDeadlockReports as
(
select convert(xml, event_data) as EventData
from sys.fn_xe_file_target_read_file(N'system_health*.xel', NULL, NULL, NULL)
where substring(event_data, 1, 50) like '%"xml_deadlock_report"%'
)
select EventData.value('(event/@timestamp)[1]', 'datetime2(7)') as TimeStamp,
EventData.query('event/data/value/deadlock') as XdlFile
from XmlDeadlockReports
order by TimeStamp desc可以将XdlFile字段保存到.xdl文件中,并将其读入SSMS。在Server 2012中测试。
https://dba.stackexchange.com/questions/10644
复制相似问题