powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить какой таблице принадлежит страница?
5 сообщений из 5, страница 1 из 1
Как определить какой таблице принадлежит страница?
    #32046603
abursh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. В листинге SP_LOCK в поле RESOURCE для некоторых типов LOCKS получаем что-то типа 7:1:87487, где
7 - номер базы, 1 - или номер файла данных, или код об"екта, а 87487 - номер страницы. Как определить, к чему относится эта страница? Где об этом почитат= можно? В BOL я что-то не нашел ответа , может подскажет кто-нибудь?
2. Кто может об"яснить, что приводит к появлению в базе TEMPDB многочисленных EXT LOCKS EXCLUSIVE?
В листинге SP_LOCK они видны так:

spid dbid objid indid type resource mode status
--- ---- ---- ----- ---- --------- ---- ------
67 2 0 0 EXT 1:824 X GRANT
...
Рейтинг: 0 / 0
Как определить какой таблице принадлежит страница?
    #32046611
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле ObjId в выводе sp_lock разве не есть id таблицы?
...
Рейтинг: 0 / 0
Как определить какой таблице принадлежит страница?
    #32046688
abursh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eсли внимательно посмотреть на приведенную строчку листинга SP_LOCK, то видно, что в графах OBJID и INDID стоят нули. Но вопрос мой был принципиален. Можно ли по коду страницы определить,информацию какого или каких об"ектов она содержит?
...
Рейтинг: 0 / 0
Как определить какой таблице принадлежит страница?
    #32046845
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Приношу извинения за не совсем корректный ответ, хотя Вы привели листинг ко второму вопросу и данные первого вопроса не соответствуют содержанию листинга - поэтому и ответ был такой...

Теперь по сути.

Для Вашего случая (type = EXT) в Books Online сказано, что Resource Column содержит "First page number in the extent being locked. The page is identified by a fileid:page combination."
Соответственно, для 1:824 fileId = 1, PageId = 824. Выясним таблицу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @fileid int, @page int
SET @fileid =  1 
SET @page =  824 
SELECT first, OBJECT_NAME(id)
  FROM sysindexes si
 INNER JOIN sysfiles sf
   ON si.groupid = sf.groupid
 WHERE @fileid = CONVERT (VARCHAR ( 2 ), (CONVERT (INT, SUBSTRING (first,  6 ,  1 )) * POWER ( 2 ,  8 )) + (CONVERT (INT, SUBSTRING (first,  5 ,  1 ))))
   and @page >= (CONVERT (INT, SUBSTRING (first,  4 ,  1 )) * POWER ( 2 ,  24 )) + (CONVERT (INT, SUBSTRING (first,  3 ,  1 )) * POWER ( 2 ,  16 )) + (CONVERT (INT, SUBSTRING (first,  2 ,  1 )) * POWER ( 2 ,  8 )) + (CONVERT (INT, SUBSTRING (first,  1 ,  1 )))
   and @page < (CONVERT (INT, SUBSTRING (first,  4 ,  1 )) * POWER ( 2 ,  24 )) + (CONVERT (INT, SUBSTRING (first,  3 ,  1 )) * POWER ( 2 ,  16 )) + (CONVERT (INT, SUBSTRING (first,  2 ,  1 )) * POWER ( 2 ,  8 )) + (CONVERT (INT, SUBSTRING (first,  1 ,  1 ))) + dpages



Код, конвертирующий first, я взял отсюда: http://www.osp.ru/win2000/2000/03/068tab1.htm#2

Удачи
...
Рейтинг: 0 / 0
Как определить какой таблице принадлежит страница?
    #32046866
abursh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Класс! Не знаю, как и благодарить! То, что надо.
АБ
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить какой таблице принадлежит страница?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]