Текущий запрос внутри хранимой процедуры - PullRequest
12 голосов
/ 15 февраля 2012

У меня есть хранимая процедура, которая в данный момент выполняется и, кажется, зависает / блокируется для определенного запроса. Как я могу увидеть, какой запрос? Желательно без изменения процедуры.

Использование

DBCC Inputbuffer (65)

дает мне

Language Event 0 EXEC mySP;

Ответы [ 3 ]

17 голосов
/ 15 февраля 2012
SELECT SUBSTRING(st.text, ( r.statement_start_offset / 2 ) + 1, 
              ( ( CASE WHEN r.statement_end_offset <= 0
                       THEN DATALENGTH(st.text) 
              ELSE r.statement_end_offset END - 
       r.statement_start_offset ) / 2 ) + 1) AS statement_text 
FROM   sys.dm_exec_requests r 
       CROSS APPLY sys.dm_exec_sql_text(sql_handle) st 
WHERE  session_id = 65 
2 голосов
/ 15 февраля 2012

Существует отличная хранимая процедура для получения расширенной информации о текущих выполняющихся запросах.Доступно для скачивания с: http://whoisactive.com

1 голос
/ 15 февраля 2012

Использовать SQL Profiler; как следует из названия, это основной инструмент профилирования для SQL Server, который может показывать время выполнения каждого оператора в процедуре.

...