下面为您介绍的sql server计划缓存所要清除的是查询计划,如果您在sql server计划缓存方面遇到过类似的问题,不妨一看。
从sql server计划缓存中清除查询计划:
以下示例通过指定查询计划句柄从sql server计划缓存中清除查询计划。为了确保示例查询在计划缓存中,首先执行该查询。将查询 sys.dm_exec_cached_plans 和 sys.dm_exec_sql_text 动态管理视图以返回查询的计划句柄。然后,将结果集中的计划句柄值插入 DBCC FREEPROCACHE 语句,以从计划缓存中仅删除该计划。
- USE AdventureWorks;
- GO
- SELECT * FROM Person.Address;
- GO
- SELECT plan_handle, st.text
- FROM sys.dm_exec_cached_plans
- CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
- WHERE text LIKE N'SELECT * FROM Person.Address%';
- GO
下面是结果集:
- plan_handle text
- -------------------------------------------------- -----------------------------
- 0x060006001ECA270EC0215D05000000000000000000000000 SELECT * FROM Person.Address;
- (1 row(s) affected)
- Remove the specific plan from the cache.
- DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
【编辑推荐】