如何从MS SQL 2008中的数据库ID,文件ID,页面ID获取表名?

时间:2011-05-11 06:41:56

标签: sql-server database database-deadlocks dbcc

我有死锁图,其中锁定的资源由这三个字段的DB ID,文件ID,页面ID提及。还有一些相关的目标。 我想知道的是这个页面属于哪个表。 我尝试DBCC PAGE(dbid, fileid, pageid) with tableresults,但没有显示任何表名。

知道如何获得这个吗?

更新:还尝试SELECT name From sys.indexes WHERE object_id = 123 and Index_id = 456 这里123是m_objid(下一个ObjectId),456是m_indexid(下一个IndexId),我得到DBCC Page命令的输出。我得到的只是NULL。

1 个答案:

答案 0 :(得分:9)

要从DBCC PAGE获取结果,您必须启用traceflag 3604,否则结果将转到SQL服务器日志:

dbcc traceon (3604)

然后尝试命令

dbcc page ( dbid, filenum, pagenum , 3)

第四个参数是printopt

  

printopt参数有   以下含义:

0 - print just the page header
1 - page header plus per-row hex dumps and a dump of the page slot array 
    (unless it's a page that doesn't > have one, like allocation bitmaps)
2 - page header plus whole page hex dump
3 - page header plus detailed per-row interpretation
来自here

定义