Как получить имя таблицы из идентификатора базы данных, идентификатора файла, идентификатора страницы в MS SQL 2008? - PullRequest
4 голосов
/ 11 мая 2011

У меня есть график взаимоблокировок, на котором заблокированный ресурс упоминается в этих трех полях: идентификатор БД, идентификатор файла, идентификатор страницы. Есть также некоторый связанный объект. Все, что я хочу знать, к какой таблице принадлежит эта страница. Я попытался 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 Ответ

9 голосов
/ 11 мая 2011

Чтобы получить результаты от 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

определение с здесь

...