2012-02-15 16 views

cevap

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

Harika, harika görünüyor! (Bunu isteyen diğer insanlar için, WHERE hattını değiştirin/kaldırın.) – cederlof

+0

Bir satır eklemek WHERE session_id! =

+0

@GabrielMcAdams - Sorunun söz konusu olması durumunda özellikle oturum kimliği ile ilgileniyorlar 65'den ('' DBCC Inputbuffer'dan (65) ') –

1

SQL Profiler; Adından da anlaşılacağı gibi, SQL Server için ana profil oluşturma aracıdır ve bir prosedür içindeki her ifade için yürütme süresini gösterebilir.

+0

Bu benim düşüncem de oldu, ama hepsi bana SP'yi tetiklemek için kullanılan "EXEC mySP" sorgusudur. Yoksa yanlış filtreleme kullanıyor muyum? – cederlof

+1

@cederlof - Profiler'de "SP: StmtCompleted" ve "SP: StmtStarting" olaylarını yakalamanız gerekir. –

İlgili konular