我目前收到错误:
System.Data.SqlClient.SqlException:事务(进程ID 109)在锁资源上与另一个进程死锁,并被选为死锁牺牲品。重新运行该交易。
根据我的研究理解,系统以最小的数据库访问权限来解决死锁问题。这不是理想的,因为保证此进程将进入错误状态。我处于这样一种情况,即进程等待死锁无法解决;这不是一个超时间关键的过程。
以下是我的问题:
更新:我知道通过简单地暂停一个进程可能无法解决死锁问题。在这种情况下,只关注第二个问题。
答案 0 :(得分:1)
您可以从system_health XEvent会话中获取死锁信息。
或者使用Azure SQL数据库的自定义XEvent会话,如下所示:
CREATE EVENT SESSION [deadlocks] ON DATABASE
ADD EVENT sqlserver.database_xml_deadlock_report(
ACTION(sqlserver.tsql_stack))
ADD TARGET package0.ring_buffer
WITH (STARTUP_STATE=ON)
GO
答案 1 :(得分:-3)
我推荐WinDbg,一个win的多用途调试。 此外,你可以尝试这个
https://www.codeproject.com/Articles/20459/Deadlock-Detection-in-Existing-Code
可以老一点,但有益于学习。