MSSQL 2005 Режим запроса - S, а Тип запроса - Блокировка

Моя проблема с моей базой данных. Я использую mssql 2005 и Management Studio. Я вижу заблокированные процессы с помощью монитора активности, и там я вижу список заблокированных процессов. Я убил процесс, который заблокирован, используя его process_id, но на этот раз другой процесс блокируется. Я убиваю, но блокировка продолжается как петля. Атрибуты заблокированного процесса: режим запроса =S тип запроса =LOCK AND статус запроса =GRAND. Есть ли кто-нибудь, чтобы помочь мне с этим?

1 ответ

Решение

Прежде всего, если запрос ПРЕДОСТАВЛЯЕТСЯ, то он не блокируется; блокировка происходит, когда запрос ожидает блокировки.

Во-вторых, когда вы смотрите, какой процесс по какой блокирован, обычно существует иерархия, например, SPID 63 блокируется SPID 128, но SPID 128 также блокируется SPID 98, который, в свою очередь, блокируется SPID 101 То, что вам нужно, - это определить, кто последний, глава цепочки блокировок, кто блокирует других, но не блокируется сам, и разобраться с этим.

Вот запрос, который поможет вам определить блокировщик головы:

select r.session_id, r.host_name, r.program_name, 
    r.login_name, r.nt_domain, r.nt_user_name, 
    r.total_elapsed_time/1000 as total_elapsed_time_sec, getdate() as vrijeme,
    (select text from sys.dm_exec_sql_text(c.most_recent_sql_handle)) as sql_text
from sys.dm_exec_connections c 
inner join sys.dm_exec_sessions r on r.session_id = c.session_id
where r.is_user_process = 1
and exists (
    select *
    from sys.dm_os_waiting_tasks r2
    where r2.blocking_session_id = r.session_id
)
and not exists (
    select *
    from sys.dm_os_waiting_tasks r3
    where r3.session_id = r.session_id
)
Другие вопросы по тегам