我刚刚开始在SQL Server 2016中使用Query数据存储,它确实很有用。 我有一个问题,在服务器上有许多服务正在监视服务代理队列,因此他们的WAITFOR语句总是显示为报告中运行时间最长的查询。 这本身不是问题,但它们运行的时间太长,以至于它们会使报告中的持续时间轴发生偏斜,以致所有其他查询几乎不可见。
有没有办法让Query Store忽略查询,因此它不会显示在报告上?
答案 0 :(得分:1)
好问题!
我没有找到如何删除一个查询(这将是有用的),但我找到了如何清除缓存以便重新开始。这样,如果您有一个更改的旧查询,您可以重置缓存并获取新数据。
ALTER DATABASE WideWorldImporters SET QUERY_STORE CLEAR;
答案 1 :(得分:1)
尝试使用sp_query_store_remove_query
。它从查询存储中删除查询以及所有关联的计划和运行时统计信息。
DECLARE @QueryStoreRemoveCommand VARCHAR(MAX)
SELECT @QueryStoreRemoveCommand = COALESCE(@QueryStoreRemoveCommand +
'; EXEC sp_query_store_remove_query ',
'EXEC sp_query_store_remove_query ')
+ CONVERT(NVARCHAR,QueryData.query_id)
FROM
(SELECT Qry.query_id
FROM sys.query_store_plan AS Pl
JOIN sys.query_store_query AS Qry
ON Pl.query_id = Qry.query_id
JOIN sys.query_store_query_text AS Txt
ON Qry.query_text_id = Txt.query_text_id
WHERE UPPER(Txt.query_sql_text) LIKE '%WAITFOR DELAY%') QueryData
PRINT @QueryStoreRemoveCommand
EXECUTE (@QueryStoreRemoveCommand)