📜  如何从计划缓存中获取一年前的查询 - SQL (1)

📅  最后修改于: 2023-12-03 14:51:48.512000             🧑  作者: Mango

如何从计划缓存中获取一年前的查询 - SQL

如果您需要查找一年前运行的某个 SQL 查询的计划,可以从 SQL Server 的计划缓存中查询。下面是如何从计划缓存中获取一年前的查询的 SQL 代码片段:

SELECT [query_plan] 
FROM sys.dm_exec_query_stats AS qs 
CROSS APPLY sys.dm_exec_sql_text(qs.[sql_handle]) AS st 
CROSS APPLY sys.dm_exec_text_query_plan(qs.[plan_handle], DEFAULT, DEFAULT) AS qp 
WHERE qs.[creation_time] < DATEADD(year, -1, GETDATE()) 
  AND st.[text] LIKE '%<your_query_here>%'; 

这个 SQL 查询使用了 sys.dm_exec_query_stats、sys.dm_exec_sql_text 和 sys.dm_exec_text_query_plan 等系统视图。它在查询计划缓存中查找所有执行时间早于一年前,并且包含指定查询的查询计划。如果找到了符合条件的查询计划,则会返回查询计划的 XML 字符串。

需要注意的是,这个查询需要运行在拥有足够权限的帐户下,否则可能会出现访问被拒绝的错误。