我正在尝试使用登录名,状态和SQL查询获取所有会话的列表(如果它们当前正在运行查询)。以下查询工作正常,但仅显示当前正在运行查询的人员。
即使会话处于睡眠状态,如何全部显示?我想我必须改变连接的类型,但我不确定是哪一个。
SELECT c.session_id,
s.login_name,
s.status AS SessionStatus,
r.status AS RequestStatus,
st.text
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s
ON c.session_id = s.session_id
LEFT JOIN sys.dm_exec_requests r
ON c.session_id = r.session_id
CROSS APPLY
sys.dm_exec_sql_text(r.sql_handle) AS st
答案 0 :(得分:0)
CROSS APPLY是问题所在。它实质上将你的LEFT JOIN变成了一个内连接。将其更改为OUTER APPLY。