2009-01-15 113 views
8

我在生产环境中的应用程序的2页上收到此错误的频率非常高,但不一致。我只是在下面的错误屏幕截图。SQL Server 2005:事务死锁

事务(进程ID XX)在锁定时死锁了|通信缓冲区资源与另一个进程并且被选为死锁受害者。重新运行交易。

解决这个错误的方法是什么。该数据库服务器是SQL Server 2005.

回答

3

这是由布拉德麦奇的article是一个很好的开始。

1

的错误信息提示你可以做的,让程序重试事务!

很大程度上取决于交易是如何“原子”的!也就是说,如果你死锁了,它的某些其他进程已经成功更新了你感兴趣的行。在异常情况下将更新应用到行是否仍然有意义?

最起码有一个更好的错误信息呈现给用户(“其他用户更改您试图更新XXXX,请再检查新值和尝试。)

2

你需要运行一个死锁我们需要确定两个有问题的进程,然后查看两页中的代码,看看哪些SQL命令正在发布以及发生多少次。的时候,我发现简单地回顾一下正在运行的SQL代码并知道它运行的频率会很快找出冲突。修复它有时需要更长的时间...