vCi*_*ion 6 sql-server performance monitoring sql-server-2016 sql-query-store
启用查询存储后,如何查找执行查询的人。例如,在跟踪收集的情况下,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
Run Code Online (Sandbox Code Playgroud)
下面的 DMV 返回查询哈希 (query_hash) 的空值,因此上面的查询没有数据
select * from sys.dm_exec_requests der
select * from sys.dm_exec_sessions des
Run Code Online (Sandbox Code Playgroud)
小智 1
如果正确启用和配置查询存储,sys.query_store_query_text 视图应包含跟踪查询的文本。
SELECT name, is_query_store_on
FROM sys.databases
Run Code Online (Sandbox Code Playgroud)
SQL Server 中的查询存储会跟踪查询、查询计划和运行时统计信息,但不会维护执行这些查询的人员的记录。
查询存储有自己的系统视图,与 sys.dm_exec_requests 和 sys.dm_exec_sessions DMV 不同。它与您正在寻找的会话级详细信息没有直接关系。
您的查询尝试根据 query_hash 将查询存储视图与会话级视图(sys.dm_exec_requests、sys.dm_exec_sessions)连接起来。sys.dm_exec_requests 中的 query_hash 字段不会持久化,仅适用于当前正在执行的请求。因此,如果当前执行的请求没有与 query_hash 匹配,它将返回 null。
此外,sys.query_store_query.query_id 与 sys.query_store_query_text.query_text_id 不同,因此连接 ON qt.query_text_id = q.query_id 可能不会给您预期的结果。
如果您需要跟踪谁在执行什么查询、何时执行、从何处执行,您可能需要使用扩展事件或 SQL Server Audit,它们可以为您提供此级别的信息。
请注意,跟踪在 SQL Server 上执行的每个查询可能会导致性能下降,因为记录每个查询及其详细信息的开销会增加。
现在,您可能需要更新连接条件以正确匹配 query_text_id,例如:
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_text_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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3089 次 |
| 最近记录: |