相关疑难解决方法(0)

造成死锁的主要原因是什么,它们可以预防吗?

最近我们的一个 ASP.NET 应用程序显示了一个数据库死锁错误,我被要求检查并修复该错误。我设法找到死锁的原因是一个存储过程,它严格更新游标内的表。

这是我第一次看到这个错误,不知道如何有效地跟踪和修复它。我尝试了我知道的所有可能的方法,最后发现正在更新的表没有主键!幸运的是,这是一个身份栏。

后来我发现为部署编写数据库脚本的开发人员搞砸了。我添加了一个主键,问题就解决了。

我感到很高兴并回到我的项目中,并做了一些研究以找出导致僵局的原因......

显然,这是导致死锁的循环等待条件。没有主键的更新显然比有主键需要更长的时间。

我知道这不是一个明确定义的结论,这就是我在这里发布的原因......

  • 缺少主键是问题吗?
  • 除了(互斥、保持等待、无抢占和循环等待)之外,是否还有其他条件会导致死锁?
  • 如何防止和跟踪死锁?

sql-server-2008 sql-server deadlock

57
推荐指数
5
解决办法
7万
查看次数

标签 统计

deadlock ×1

sql-server ×1

sql-server-2008 ×1