如何识别系统查询

时间:2016-06-06 09:08:45

标签: sql-server sql-server-2008

我目前从表sys.dm_exec_query_stats获取已执行查询的详细信息。有没有办法确定执行的查询是否是系统查询,使用sys.dm_exec_query_stats表中的某些信息或使用其他一些方法

1 个答案:

答案 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