IIS 6.0 SQL 2000 死锁错误

IIS 6.0 SQL 2000 死锁错误

我最近开始了一份新工作,他们有一个与单独的数据库服务器通信的 Web 服务器。最近,它在运行 ASP 页面时引发了死锁错误,例如:

错误:MSSQL 2kTransaction(进程 ID 103)与另一个进程在锁定资源上发生死锁,并被选为死锁牺牲品。重新运行该事务。

当 asp 页面尝试访问 MSSQL 2k 数据库时发生上述错误。

他们认为这是服务器问题,所以请我来处理。任何帮助都将不胜感激。

答案1

通常,死锁是数据库设计问题或应用程序访问数据库资源的方式不一致造成的。通常,您可以通过更改数据库而不是基础架构来解决问题。在功能测试期间,通常不会发现死锁,但在进行性能和可扩展性测试时往往会发现死锁。

您可以使用跟踪来帮助开发团队解决这个问题,跟踪会导致更详细的信息记录到 SQL 日志中。

例如:DBCC TRACEON (3605,1205,-1) - 捕获完日志消息后,请确保将其关闭(DBCC TRACEOFF)!

接下来,使用任何 SQL 安装验证典型事项:

  • 确保它处于SP4
  • 具有适当的硬件设置 - raid 1 驱动器上的日志文件、raid 5 驱动器上的数据文件、raid 1 驱动器上的 tempdb 以及 raid 5 驱动器上的备份 - 我称之为任何真实服务器的最低限度。
  • 已设置维护计划(备份、重建索引、完整性检查、更新统计数据)。我相信 SQL 2000 有一个用于此的维护计划向导。

最后,开始计划迁移到 SQL 2008 R2 - SQL 2000 现在已结束主流支持,并将于 2013 年退出扩展支持。

答案2

你需要明白为什么发生死锁。请按照以下产品文档的指导操作:检测并结束死锁解决死锁问题

如果没有死锁信息,就不可能预先说明如何解决死锁。通常,解决方案是更改数据模型(例如添加缺失索引)和/或修复应用程序设计(更改访问模式和查询)。

相关内容