我试图跟踪我们的SQL 2005数据库(64位)中发生的死锁.我们目前没有启用快照隔离.
我打开了tf-1204并收到了下面的输出.
通过此输出,我可以确定节点1是一个存储过程,它选择数据并仅修改#temp表中的值.
节点2是另一个存储过程,对单行数据进行基于简单主键的更新.
我无法确定的是这里争用的实际资源.10的密钥:72057594060734464和10:72057594038910976允许我确定数据库,但无法使用object_name解析这些对象ID.实际上,它们应该是int值,所以我不确定这些大数字来自哪里.
在研究这个问题时,我也能从Activity Monitor for Object ID中获得类似的值.
如何解析这些对象标识符?
这是死锁tf-1204输出:
2008-12-05 07:48:28.19 spid4s ---------------------------------- 2008-12-05 07:48:28.19 spid4s Starting deadlock search 634 2008-12-05 07:48:28.19 spid4s Target Resource Owner: 2008-12-05 07:48:28.19 spid4s ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 2008-12-05 07:48:28.19 spid4s 0:Insert new node: Node:1 ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 2008-12-05 07:48:28.19 spid4s 1:SearchOR Considering new blocker - task: 0000000000EC5198, Worker 00000000C89881C0 2008-12-05 07:48:28.19 spid4s 2:Insert new node: Node:2 ResType:LockOwner Stype:'OR'Xdes:0x00000000808F1A80 Mode: …