3

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

有什么方法可以让查询存储忽略查询,使其不会显示在报告中?

4

2 回答 2

3

尝试使用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)
于 2018-05-25T21:58:00.947 回答
1

好问题!
我没有找到如何删除一个查询(这很有用),但我找到了如何清除缓存以便您可以重新开始。这样,如果您有更改的旧查询,您可以重置缓存并获取新数据。

ALTER DATABASE WideWorldImporters SET QUERY_STORE CLEAR;

于 2017-12-01T17:52:12.500 回答