Поиск блокировок на БД MS SQL

On 24/06/2022, in MS SQL, by Алексей Волобуев

Статья по поиску блокировок на БД MS SQL и их удаления.
testbd12 — имя БД, на которой возникли блокировки

Поиск блокировок, запрос

SELECT *
FROM
master.dbo.sysprocesses
WHERE
dbid = DB_ID('testbd12') and blocked <> 0
order by blocked

Получаем список блокированных процессов
spid — процесс
blocked — пид процесса который заблокировал

Cписок блокированных процессов

Смотрим конкретный процесс

select * FROM
master.dbo.sysprocesses
where 1=1
--and blocked <> 0
and spid = 882

Смотрим заблокированный процесс (в примере 882) видим что поле blocked не равно нулю, повторяем поиск с новым spid

Когда поле blocked = 0 значит это первоисточник блокировки (в нашем примере spid = 1534)

!!!! Для анализа проблемы — посмотреть текст запроса — в скобках поле sql_handle процесса блокировки

select * from sys.dm_exec_sql_text (0x01000A0046ECEC13303E4A9D5501000000000000)

Убить проблемный запрос
цифры это spid проблемного запроса первоисточника блокировки

kill 1534

Tagged with:  

Добавить комментарий

Ваш адрес email не будет опубликован.

Яндекс.Метрика