SQL Server — зависший процесс — SPID-запрос

Как узнать, какой связанный запрос выполняется, если у меня есть SPID. Попытка выяснить, какой запрос связан, поскольку процесс, похоже, завис.


person Chris    schedule 04.03.2011    source источник
comment
какую версию SQL Server вы используете?   -  person Abe Miessler    schedule 04.03.2011


Ответы (3)


какая версия sql сервера? для 2000 и выше можно сделать

dbcc inputbuffer (spid)

Это даст первые 255 символов

замените spid числовым номером для spid

для 2005 и выше измените @@SPID на SPID, который вы ищете

select dest.*
from  sys.dm_exec_requests as der
             cross apply sys.dm_exec_sql_text (der.sql_handle) as dest
where session_id = @@spid
person SQLMenace    schedule 04.03.2011

Предполагая, что SQL Server 2005+

SELECT
    CASE
        WHEN statement_end_offset = -1
        THEN text
        ELSE SUBSTRING(text,statement_start_offset/2,(statement_end_offset- statement_start_offset)/2)
    END, *
FROM    sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE session_id = <whatever>

Вы можете загрузить файл "Who is Active?", которая собирает гораздо больше информации, чем эта.

person Martin Smith    schedule 04.03.2011

Если вы посмотрите на него в мониторе активности, вы сможете найти SQL, связанный с SPID, щелкнув правой кнопкой мыши и выбрав «подробности».

Вот несколько ссылок для начала:

Вы также можете убить его оттуда в крайнем случае.

person Abe Miessler    schedule 04.03.2011