0

如果它们当前正在运行查询,我正在尝试获取具有登录名、状态和 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
4

1 回答 1

0

CROSS APPLY 是问题所在。它实质上将您的 LEFT JOIN 变成了内部连接。将其更改为外部应用。

于 2013-10-21T23:58:16.603 回答