使用C#我编写了一个Windows服务并分离了Windows应用程序
出于某种原因,我一直收到以下错误。
现在这个错误发生了很长时间。
" CustomSQL执行期间的SQL异常:事务(进程ID 119) 锁定资源与另一个进程陷入僵局并一直存在 被选为死锁受害者。重新运行该交易。 "
我知道其他服务也在访问数据库中的同一个表。他们已经很长一段时间,也就是几个月,从未见过这个错误。
如何解决错误以准确找到导致此错误的原因?
谢谢
答案 0 :(得分:0)
有许多方法可以解决死锁问题。通常我首先运行此查询:
Declare @xml xml
Select @xml = CAST(target_data AS XML)
FROM sys.dm_xe_session_targets st
Inner Join sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE [name] = 'system_health'
Select
XEventData.XEvent.value('@package', 'nvarchar(max)') Package,
XEventData.XEvent.value('@name', 'varchar(max)') Name,
XEventData.XEvent.value('@timestamp', 'DateTime') Date,
XEventData.XEvent.query('(data/value)[1]') Deadlock,
cast(XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)') as xml),
XEvent.query('.') --*
From @xml.nodes('//RingBufferTarget/event') as XEventData (XEvent)
WHERE XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report';
然后,您可以使用结果查看死锁的原因。
答案 1 :(得分:0)
您可能需要检查以下几项以减少死锁的可能性: