加入多个动态管理视图表

时间:2013-10-21 23:50:20

标签: sql sql-server sql-server-2005 dynamic-management-views

我正在尝试使用登录名,状态和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

1 个答案:

答案 0 :(得分:0)

CROSS APPLY是问题所在。它实质上将你的LEFT JOIN变成了一个内连接。将其更改为OUTER APPLY。