Say*_*man 0 sql-server deadlock
有没有办法在 MSSQL 上造成人为的无限死锁?我需要引起死锁,以便我可以测试一些存储过程来自动消除死锁。有没有办法做到这一点?
Brendan McCaffrey 是对的,在正常情况下,SQL Server 会自动识别并解决死锁。
有时,某些错误会导致未检测到的死锁。处理这些问题的传统建议是对 SQL Server 应用可用更新,如果问题仍然存在,请向 Microsoft 开具相关票证。
如果您确实在环境中遇到未检测到的(无限)死锁的问题,并且需要一种方法来创建这种情况,以便您可以测试您的编程方法来杀死它们,Joe Obbish 有一个很好的方法可以在这里创建一个:
该方法的摘要是运行一个普通查询,该查询将获取并持有一些锁,然后OPENROWSET在同一会话中运行一个查询,请求同一对象上的锁。这会导致奇怪的循环依赖,该依赖无法自行解决,并且 SQL Server 不会检测为死锁。