将数据从SQL Server 2000迁移到SQL Server 2008之后,当我在表中进行任何交易,以发现数据库上更多行,这给了我错误。

 Transaction (Process ID 59) was deadlocked on lock resources with
 another process and has been chosen as the deadlock victim. 
 Rerun the transaction.

表上有3个触发器(插入,更新,删除)。我怎么解决这个问题?

有帮助吗?

解决方案

升级到SQL Server 2008后,您是否运行了以下?

  1. DBCC UpdateUsgae
  2. 使用FullScan更新统计数据
  3. 重建所有索引

从2000年到SQL Server 2008,统计斑点的变化很大,升级后上述步骤非常重要。我已经看到许多人遇到了性能问题,但没有僵局。如果您还没有远处,我将尝试做以上所有操作,然后尝试重现问题。

也就是说,在2008框中select @@版本的结果是什么?您是在更新一行还是几行?

其他提示

嫌疑犯 这可能与不同版本处理中的优化器有关 锁定升级 不同。你能检查吗 Lock:Escalation 事件?

如果您运行Profiler并记录所有僵局图,则可以准确找出僵局出现的表格,包括页面。那应该有助于缩小它。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top