📅  最后修改于: 2023-12-03 14:51:48.512000             🧑  作者: Mango
如果您需要查找一年前运行的某个 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 字符串。
需要注意的是,这个查询需要运行在拥有足够权限的帐户下,否则可能会出现访问被拒绝的错误。