3

我正在寻找有关如何在 SQL Server 2000 数据库中调试和解决死锁问题的建议。有人建议我使用跟踪标志 1024 和 3605,我发现它们给了我以下信息:

1024 - 此跟踪标志返回参与死锁的锁类型和受影响的当前命令。

3605 - 此跟踪标志将跟踪输出发送到错误日志。

仍然需要发现特定的存储过程、表和索引,因此目标是使用这些跟踪标志来做到这一点。然后从那里我会更好地了解哪些索引需要调整、调整查询的锁定提示以及需要修复的潜在存储过程错误。

关于将这一切归结为常见问题的任何其他建议或快乐结局的战争故事?

4

3 回答 3

3

这是关于死锁故障排除的圣经:http: //blogs.msdn.com/bartd/archive/2006/09/09/Deadlock-Troubleshooting_2C00_-Part-1.aspx

于 2008-09-09T18:51:03.997 回答
3

分析死锁的非常有用的脚本:http: //www.sommarskog.se/sqlutil/aba_lockinfo.html

于 2008-09-17T08:46:36.237 回答
2

一旦你知道所涉及的 sql 语句,代码分析肯定会有所帮助。一些经验法则正在检查访问行的顺序并检查用于 SQL 语句的隔离级别。探查器跟踪可以提供很大帮助。

大多数情况下,这是因为读取器试图获得对由写入器独占锁定的资源的共享锁。

于 2008-09-09T18:48:14.610 回答