我刚刚开始在 SQL Server 2016 中使用查询数据存储,它确实非常有用。我有一个问题,在服务器上有许多服务正在监视服务代理队列,因此它们的 WAITFOR 语句始终显示为报告中运行时间最长的查询。这本身不是问题,但它们运行的时间太长,以至于它们在报告上倾斜了持续时间轴,因此所有其他查询几乎不可见。
有什么方法可以让查询存储忽略查询,使其不会显示在报告中?
我刚刚开始在 SQL Server 2016 中使用查询数据存储,它确实非常有用。我有一个问题,在服务器上有许多服务正在监视服务代理队列,因此它们的 WAITFOR 语句始终显示为报告中运行时间最长的查询。这本身不是问题,但它们运行的时间太长,以至于它们在报告上倾斜了持续时间轴,因此所有其他查询几乎不可见。
有什么方法可以让查询存储忽略查询,使其不会显示在报告中?
尝试使用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)
好问题!
我没有找到如何删除一个查询(这很有用),但我找到了如何清除缓存以便您可以重新开始。这样,如果您有更改的旧查询,您可以重置缓存并获取新数据。
ALTER DATABASE WideWorldImporters SET QUERY_STORE CLEAR;