SELECT
r.session_id,
s.host_name,
s.program_name,
DB_NAME(r.database_id) AS databaseName,
r.status,
r.command,
r.total_elapsed_time AS elapsed_ms,
r.cpu_time AS cpu_ms,
r.logical_reads,
r.wait_type,
r.wait_time AS wait_ms,
r.blocking_session_id,
SUBSTRING(
t.text,
r.statement_start_offset / 2 + 1,
(
CASE
WHEN r.statement_end_offset = -1
THEN DATALENGTH(t.text)
ELSE r.statement_end_offset
END - r.statement_start_offset
) / 2 + 1
) AS runningStatement,
t.text AS batchText
FROM sys.dm_exec_requests AS r
JOIN sys.dm_exec_sessions AS s
ON s.session_id = r.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE
r.session_id <> @@SPID
AND s.is_user_process = 1
ORDER BY r.total_elapsed_time DESC;