从查询存储报告中删除查询

时间:2017-12-01 08:51:05

标签: sql-server-2016 sql-query-store

我刚刚开始在SQL Server 2016中使用Query数据存储,它确实很有用。 我有一个问题,在服务器上有许多服务正在监视服务代理队列,因此他们的WAITFOR语句总是显示为报告中运行时间最长的查询。 这本身不是问题,但它们运行的​​时间太长,以至于它们会使报告中的持续时间轴发生偏斜,以致所有其他查询几乎不可见。

有没有办法让Query Store忽略查询,因此它不会显示在报告上?

2 个答案:

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