Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
Satans Claws
Member

Откуда:
Сообщений: 64
Имеется прога, которая активно использует наложение блокировок по ключам посредством sp_getapplock.
Очень хочется получать в цивильном виде список блокировок, наложенных в течении выполнения транзакции.

Пробовал через Активити-монитор - информацию получить можно, но жутко неудобно.
Попробовал вторым активити-монитором посмотреть, как первый получает информацию - увидел
"select l.* from #snapshot_locks_perobject l, #snapshot_locks_perobject_sortedindex p
where p.[Range] >= 0 and p.[Range] <= 46 and p.[ROW ID] = l.[ROW ID]
order by p.[Range] ", но как набиваются эти временные таблички - непонятно. Как достучаться до них - тоже.

Куда рыть?
26 дек 11, 13:41    [11826288]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
В общем случае это невозможно. В частных случаях иногда можно, воспользовавшись недокументированными способами. Возможность зависит от версии сервера и правил именования блокируемых ресурсов.
26 дек 11, 14:01    [11826455]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
Satans Claws
Member

Откуда:
Сообщений: 64
Правила именования ключей известны.

в общем случае, они выглядят как
'<имя раздела>*<ключ>'
имен разделов ограниченное количество - штук 10, наверное.
26 дек 11, 14:09    [11826521]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Версия сервера? Максимальная длинна имени ресурса?
26 дек 11, 14:15    [11826582]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
Satans Claws
Member

Откуда:
Сообщений: 64
invm,

Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

Максимальная длина блокируемого ключа (полная - т.е. префикс+ключ) чуть меньше 50 символов.
В зависимости от префикса длина может быть разной.
26 дек 11, 14:24    [11826687]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Satans Claws
invm,

Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

Максимальная длина блокируемого ключа (полная - т.е. префикс+ключ) чуть меньше 50 символов.
В зависимости от префикса длина может быть разной.
Ну тогда вам не повезло. Список блокировок можно было бы получить, если длинна наименования ресурса не превышает 16 символов. Максимум, что можно -- по наименованию ресурса вытащить spid блокирующей сессии.
26 дек 11, 14:48    [11826912]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
Satans Claws
Member

Откуда:
Сообщений: 64
invm,
Для многих разделов общая длина ключа укладывается в 16 символов.
Как хотя бы их вытащить?
27 дек 11, 06:34    [11830549]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Satans Claws
invm,
Для многих разделов общая длина ключа укладывается в 16 символов.
Как хотя бы их вытащить?
Представление sys.dm_tran_locks. Для строк с resource_type = APPLICATION, столбец resource_description содержит в своем составе первые 16 символов наименования ресурса.
27 дек 11, 09:14    [11830741]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
Satans Claws
Member

Откуда:
Сообщений: 64
invm
Представление sys.dm_tran_locks. Для строк с resource_type = APPLICATION, столбец resource_description содержит в своем составе первые 16 символов наименования ресурса.


Оооооо! Грациас!
Кстати, первые 32 символа наименования ресурса.
27 дек 11, 09:51    [11830914]     Ответить | Цитировать Сообщить модератору
 Re: Как посмотреть список ключей, заблокированных с помощью sp_getapplock  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Ну да, 32. Это в syslockinfo 16.
27 дек 11, 10:02    [11831003]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить