Как найти имена таблиц, которые заблокированы (специфично для любой транзакции) - PullRequest
8 голосов
/ 16 декабря 2010

Есть ли способ вывести список заблокированных таблиц и убить транзакции, если мы хотим, чтобы они были немедленно разблокированы.

Или есть какая-то другая терминология, которой мы должны следовать для вышеуказанной операции, которую я ищуДля.

Любая помощь или руководство будут оценены.

1 Ответ

13 голосов
/ 16 декабря 2010

Это покажет все базы данных с удерживаемыми эксклюзивными блокировками (которые могут включать временные блокировки, удерживаемые во время выполнения), используя sys.dm_tran_locks DMV:

select d.*, l.* from sys.dm_tran_locks l
join sys.databases d on l.resource_database_id = d.database_id 
where l.request_mode = 'X'

(X = исключительный, S = общий, IS = намеренный общий) См. Режимы блокировки .

Но, вероятно, лучший способ - включить флаги трассировки 1204 и 1222:

Флаг трассировки 1204 и флаг трассировки 1222 При возникновении взаимоблокировок флаг трассировки 1204 и флаг трассировки 1222 возвращают информацию, записанную в журнале ошибок SQL Server 2005.Флаг 1204 трассировки сообщает информацию о взаимоблокировке, отформатированную каждым узлом, участвующим в взаимоблокировке.Флаг трассировки 1222 форматирует информацию о взаимоблокировке сначала по процессам, а затем по ресурсам.Можно включить оба флага трассировки для получения двух представлений одного и того же события взаимоблокировки.

Ссылка: Обнаружение и окончание взаимоблокировки

Кроме того, выполните команду sp_who2 и найдите записи в столбце BlkBy (заблокировано);следуйте им, пока не доберетесь до головы тупиковой цепи.За это отвечает идентификатор процесса (или PID).

Чтобы узнать, что sql работает за конкретным процессом, вы можете запустить:

dbcc inputbuffer (@pid)

и использовать этот PID для уничтожения процесса (с помощьюблагоразумие и на свой страх и риск):

kill @pid

Проверить Кто активен?v10.00: Мониторинг DMV стал проще

Также читайте Блокировка не является взаимоблокировкой (чтобы различать два сценария)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...