DECLARE @OpenQueries TABLE (cpu_time INT, logical_reads BIGINT, session_id INT, writes INT);

INSERT INTO @OpenQueries(cpu_time, logical_reads, session_id, writes)
SELECT r.cpu_time ,r.logical_reads, r.session_id, r.writes
FROM sys.dm_exec_sessions AS s
JOIN sys.dm_exec_requests AS r 
  ON s.session_id =r.session_id
 AND s.last_request_start_time=r.start_time
WHERE is_user_process = 1
AND s.session_id <> @@SPID;

WAITFOR DELAY '00:00:01';

SELECT
  r.session_id
, r.blocking_session_id
, d.name AS [db_name]
, s.login_name
, SUBSTRING(h.text, (r.statement_start_offset/2)+1 , ((CASE r.statement_end_offset WHEN -1 THEN datalength(h.text) ELSE r.statement_end_offset END - r.statement_start_offset)/2) + 1) AS text
, r.command
, r.cpu_time-t.cpu_time AS CPUDiff
, r.logical_reads-t.logical_reads AS ReadDiff
, r.writes-t.writes AS WriteDiff
, r.wait_type
, r.wait_time
, r.last_wait_type
, r.wait_resource
, r.granted_query_memory
, r.reads
, r.writes, r.row_count, s.[host_name]
, s.[program_name]
FROM sys.dm_exec_sessions AS s
JOIN sys.dm_exec_requests AS r 
  ON s.session_id =r.session_id
 AND s.last_request_start_time=r.start_time
LEFT JOIN sys.databases AS d
  ON r.database_id = d.database_id
LEFT JOIN @OpenQueries AS t
  ON t.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) h
WHERE is_user_process = 1
AND s.session_id <> @@SPID
ORDER BY r.session_id;

 

Share This Via: