2011年11月4日 星期五

使用DMV(Dynamic Management View)找出目前正在執行的查詢

執行以下程式碼可以找出的資訊:
1.      是誰在執行,參照[主機名稱][登入名稱]
2.      執行SQL指令,參照[SQL指令]
3.      執行SQL指令的應用程式名稱,參照[執行程式名稱]
4.      SQL指令目前執行多久,參照[執行時間]
5.      BLOCKTransaction的資訊,參照[目前執行SQLtransaction數目][等待類別]等。

SELECT
 b.session_id
,b.host_name  [主機名稱]
,b.login_name [登入名稱]
,a.status  [執行狀態]
,DB_NAME(database_id) AS [資料庫名稱]
,c.text AS [SQL指令]
,b.program_name [執行程式名稱]
,a.start_time   [SQL開始執行時間]
,a.wait_type    [等待類別]
,a.total_elapsed_time [執行時間]
,a.cpu_time           [CPU時間]
,a.logical_reads      [邏輯讀取]
,a.open_transaction_count [目前執行SQLtransaction數目]
,a.last_wait_type       [上次等待類別]
FROM sys.dm_exec_requests AS a
INNER JOIN sys.dm_exec_sessions AS b ON b.session_id = a.session_id
CROSS APPLY sys.dm_exec_sql_text( a.sql_handle) AS c
WHERE b.is_user_process=1 AND b.session_Id <> (@@SPID)
ORDER BY b.session_id

執行結果:


沒有留言:

張貼留言