我目前从表sys.dm_exec_query_stats获取已执行查询的详细信息。有没有办法确定执行的查询是否是系统查询,使用sys.dm_exec_query_stats表中的某些信息或使用其他一些方法
答案 0 :(得分:2)
在sys.dm_exec_sessions
中有一个名为is_user_process
的列。 0
表示系统进程,1
是用户进程。 MSDN链接here。
要显示与表的连接,我发布了用于监控活动的查询:
SELECT distinct
s.session_id,
s.login_name,
c.client_net_address,
w.wait_duration_ms,
w.wait_duration_ms/1000/60 as [min],
w.wait_type,
w.resource_address,
w.blocking_session_id,
w.resource_description,
CAST (st.text as nvarchar(max)) AS [SQL Text],
s.is_user_process
FROM sys.dm_exec_sessions S
LEFT JOIN sys.dm_exec_connections AS c ON S.session_id = c.session_id
LEFT JOIN sys.dm_exec_query_stats qs on c.most_recent_sql_handle = qs.sql_handle
INNER JOIN sys.dm_os_waiting_tasks AS w ON w.session_id = s.session_id
OUTER APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY s.is_user_process DESC, w.wait_duration_ms DESC