将数据从 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 后,您是否运行了以下命令?
从 2000 到 SQL Server 2008,统计 blob 发生了显着变化,升级后上述步骤非常重要。我见过很多人遇到性能问题但没有死锁。如果您到目前为止还没有,我会尝试执行上述所有操作,然后尝试重现该问题。
也就是说,SELECT @@VERSION 在 2008 框上的结果是什么?您是更新一行还是几行?
我怀疑这可能与不同版本中的优化器以不同方式处理锁升级有关。你能检查
Lock:Escalation
事件吗?如果你运行 Profiler 并记录所有死锁图,那么你可以准确地找出死锁发生在哪些表上,包括页面。这应该有助于缩小范围。