2012-02-15 7 views

Respuesta

15
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 
+0

Genial, parece funcionar bien. (Para otras personas que lo deseen, cambie/elimine la línea WHERE). – cederlof

+0

Es útil agregar una línea DONDE session_id! =

+0

@GabrielMcAdams - En el caso de la pregunta, están específicamente interesados ​​en la identificación de sesión ' 65' (de 'DBCC Inputbuffer (65)') –

1

Use SQL Profiler; como su nombre lo indica, es la herramienta principal de creación de perfiles para SQL Server y puede mostrar el tiempo de ejecución de cada instrucción dentro de un procedimiento.

+0

Esa fue mi idea también, pero todo lo que me muestra es la consulta "EXEC mySP" utilizada para activar el SP. ¿O estoy usando un filtrado incorrecto? – cederlof

+1

@cederlof - Debería capturar los eventos 'SP: StmtCompleted' y' SP: StmtStarting' en Profiler. –

Cuestiones relacionadas