2012-02-15 11 views

risposta

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

Cool, sembra funzionare benissimo! (Per altre persone che lo desiderano, cambia/rimuovi la linea WHERE.) – cederlof

+0

È utile aggiungere una riga WHERE session_id! =

+0

@GabrielMcAdams - Nel caso della domanda sono specificamente interessati all'ID di sessione ' 65' (da 'DBCC Inputbuffer (65)') –

1

Utilizzare SQL Profiler; come suggerisce il nome, è lo strumento di profilatura principale per SQL Server e può mostrare il tempo di esecuzione per ogni istruzione all'interno di una procedura.

+0

Anche questo è stato il mio pensiero, ma tutto ciò che mi viene in mente è la query "EXEC mySP" utilizzata per attivare SP. O sto usando un filtro errato? – cederlof

+1

@ cederlof - È necessario acquisire gli eventi 'SP: StmtCompleted' e' SP: StmtStarting' in Profiler. –

Problemi correlati