SELECT
r.start_time,
p.spid
, p.blocked
, p.hostname
, p.program_name
, p.nt_username
, r.command
, r.status
, CASE WHEN statement_start_offset = 0 THEN t.text
ELSE (SELECT TOP 1 SUBSTRING(t.text,statement_start_offset / 2+1 ,
((CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(nvarchar(max),t.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1))
END AS sql_statement
, t.text raw_text
, r.blocking_session_id
, r.wait_time
, r.wait_type
, r.wait_resource
, r.last_wait_type
,r.logical_reads
,qp.query_plan
,r.sql_handle
FROM sys.dm_exec_requests r
INNER JOIN sys.sysprocesses p
ON p.spid = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) qp
ORDER BY
p.spid