【问题标题】:How to get table name from database id, file id, page id in MS SQL 2008?如何从 MS SQL 2008 中的数据库 ID、文件 ID、页面 ID 获取表名?
【发布时间】:2011-05-11 06:41:56
【问题描述】:
我有一个死锁图,其中锁定资源由这三个字段 DB ID、文件 ID、页面 ID 提及。还有一些相关的objectid。
我只想知道这个页面属于哪个表。
我试过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。
【问题讨论】:
标签:
sql-server
database
database-deadlocks
dbcc
【解决方案1】:
要从DBCC PAGE 获取结果,您必须启用跟踪标志 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的定义