使用DMV找出目前正在執行的查詢的相關訊息,包含是誰執行SQL,執行時間與BLOCK與Transaction的資訊。
執行以下程式碼可以找出的資訊:
是誰在執行,參照[主機名稱]與[登入名稱]。
執行SQL指令,參照[SQL指令]。
執行SQL指令的應用程式名稱,參照[執行程式名稱]。
SQL指令目前執行多久,參照[執行時間]。
BLOCK與Transaction的資訊,參照[目前執行SQL的transaction數目]與[等待類別]等。
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 [目前執行SQL的transaction數目]
,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
執行結果: