0

我正在研究我们的应用程序中发生的死锁。我为 1204、1205 和 3605 打开了跟踪。我得到了死锁跟踪。但我无法弄清楚它陷入僵局的资源。我读过很多论坛,他们都说跟踪应该包含一个叫做 KEY/RID 的东西,它会指向有问题的资源。但我的跟踪文件根本不包含 KEY/RID。相反,它包含称为 PAGE 的内容。

例如,06/30/2010 16:29:52,spid4s,Unknown,PAGE: 8:1:16512 CleanCnt:2 Mode:IX Flags: 0x2 06/30/2010 16:29:52,spid4s,Unknown,PAGE : 8:1:5293 CleanCnt:2 模式:IX 标志:0x2

根据我得到的这个 PAGE 信息,我如何确定这个资源是什么?在此先感谢您的帮助!

4

1 回答 1

1

看起来锁定是在页面级别完成的。查看http://msdn.microsoft.com/en-us/library/aa937573(SQL.80).aspx > 使用跟踪标志 1204 > 跟踪标志 1204 报告中的术语 > PAG

PAG

标识持有或请求锁定的页面资源。

PAG 在跟踪标志 1204 中表示为 PAG:db_id:file_id:page_no;例如,PAG:7:1:168。

编辑

  1. 使用 DBCC PAGE(http://support.microsoft.com/kb/83065http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server/26555/Determining-table-for-a-particular- File-id-Page-No ) 从页面信息中获取对象id,

  2. 然后使用 OBJECT_NAME ( http://msdn.microsoft.com/en-us/library/ms186301.aspx ) 或查询 sys.objects 来获取资源

于 2010-07-01T10:22:24.640 回答