Выполнение текущего запроса внутри хранимой процедуры
У меня есть хранимая процедура, которая в настоящее время запущена, и, похоже, зависает/блокируется по конкретному запросу. Как я могу посмотреть, какой запрос? Предпочтительно без изменения proc.
Использование
DBCC Inputbuffer (65)
дает мне
Язык Событие 0 EXEC mySP;
С уважением,
Cederlof
Ответы
Ответ 1
Существует отличная хранимая процедура для получения расширенной информации о текущих запросах. Он доступен для загрузки с:
http://sqlblog.com/blogs/adam_machanic/archive/2011/04/27/who-is-active-v11-00-a-month-of-activity-monitoring-part-27-of-30.aspx
Ответ 2
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
Ответ 3
Использовать SQL Profiler; как следует из названия, это основной инструмент профилирования для SQL Server, и он может отображать время выполнения для каждого оператора внутри процедуры.