如何使用 SQL Server 2016+ 中的查询存储查找哪个程序或用户执行了查询

问题描述 投票:0回答:0

启用query store后,如何找到谁执行了query。 例如,在跟踪收集的情况下,有 TRC 文件将获取主机名和程序详细信息以供查询,而在扩展事件的情况下,我们有 XEL 文件将获取主机名和程序详细信息。 我们尝试了代码

SELECT des.program_name,
des.host_name,
*
FROM sys.query_store_query_text qt -- Query Text
JOIN sys.query_store_query q ON qt.query_text_id = q.query_id -- Query Data
JOIN sys.query_store_plan qp on qp.query_id = q.query_id --  Query Plan
join sys.dm_exec_requests der on der.query_hash = q.query_hash -- Get session id for query
join sys.dm_exec_sessions des on des.session_id = der.session_id -- Session Info
order by q.last_execution_time desc

以下 DMV 返回查询哈希 (query_hash) 的空值,因此上面的查询没有数据

select * from sys.dm_exec_requests der
select * from sys.dm_exec_sessions des
sql-server performance monitoring sql-server-2016 sql-query-store
© www.soinside.com 2019 - 2024. All rights reserved.