アクティブなクエリとそのコストを表示する
SQL Serverセッションコマンド
SELECT r.session_id,
r.status,
r.command,
DB_NAME(r.database_id) AS db,
r.cpu_time,
r.total_elapsed_time / 1000 AS elapsed_sec,
r.reads, r.writes, r.logical_reads,
r.wait_type,
SUBSTRING(t.text,
(r.statement_start_offset/2)+1,
((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(t.text)
ELSE r.statement_end_offset END - r.statement_start_offset)/2)+1) AS running_statement
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.is_user_process = 1 AND r.session_id <> @@SPID
ORDER BY r.total_elapsed_time DESC;概要
現在実行中のユーザークエリを、CPU、経過時間、読み取り / 書き込み、正確なステートメントテキストとともに表示する。
使用する場面
稼働中の性能低下時に、どのクエリがリソースを消費しているかを特定するため。
注意
statement_start/end_offset により、(バッチ全体ではなく) 実行中の正確なステートメントを抽出する。照会のみでリスクなし。