【问题标题】:SQL Server trace - translating PAGE information to actual resourceSQL Server 跟踪 - 将 PAGE 信息转换为实际资源
【发布时间】:2010-07-01 09:24:00
【问题描述】:

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

例如, 2010 年 6 月 30 日 16:29:52,spid4s,未知,页面:8:1:16512 CleanCnt:2 模式:IX 标志:0x2 2010 年 6 月 30 日 16:29:52,spid4s,未知,页面:8:1:5293 CleanCnt:2 模式:IX 标志:0x2

如何根据我得到的这个 PAGE 信息来确定这个资源是什么?提前感谢您的帮助!

【问题讨论】:

    标签: sql sql-server resources database-deadlocks


    【解决方案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 来获取资源

    【讨论】:

    • 感谢土豆剥皮。我走到那一步了。我想弄清楚的是提出一个查询,该查询将根据此 PAGE 信息中的 db_id、file_id 和 page_no 指向被锁定的资源。
    • 在我提交答案后意识到 :-)。只是将其余部分添加为编辑。
    • 太棒了!这就是我要找的。非常感谢!
    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多