Получение имени индекса, заблокированного для события трассировки Lock: Acquired - PullRequest
2 голосов
/ 15 марта 2011

Я собираю Lock: Получено трассировки событий с помощью SQL Server Profiler, и я хотел бы иметь возможность идентифицировать имя индекса, к которому применяется блокировка для блокировок типа KEY.

Я могу сделать это для типов блокировки OBJECT (выполнив следующий запрос, используя значение из столбца ObjectID в трассировке):

SELECT OBJECT_ID( /* my object id */ )

Однако для типов блокировки KEY столбец ObjectIDпуст, а в столбце ObjectID2 содержится значение bigint, которое слишком велико для работы с использованием вышеуказанного запроса.

Как узнать, к какому индексу применяется блокировка KEY из моей трассировки?

1 Ответ

1 голос
/ 15 марта 2011

Посмотрите на этот ответ от очень интеллектуального MVP-сервера SQL Server

http://www.eggheadcafe.com/software/aspnet/33177368/what-is-the-objectid2-column-for-locks-acquired-referring-to.aspx

Если вы зафиксировали трассировку блокировки и когда транзакция открыта, в Windows Query введите это

select * from sys.dm_tran_locks
exec sp_lock

Вы увидите различную информацию, которая в основном соответствует столбцу TextData в трассировке.Похоже, что это физическая страница / местоположение в заблокированном месте - на индексы как таковые не ставятся блокировки, блокировки в основном для KEY (запись) или PAGE.

...