我正在使用SQL Server 2008 R2.
我知道这DBCC FREEPROCCACHE将清除SQL Server中所有存储过程的缓存.
但我需要的是清除只有1个存储过程的缓存.我怎样才能做到这一点?
存储过程名称是Rpt_RegionReport.我不想用WITH RECOMPILE选项执行存储过程.
谢谢
Lua*_*aan 11
DBCC FreeProcCache 有一个可选参数 - 要删除的执行计划的ID.
您可以sys.dm_exec_cached_plans使用它找到要删除的计划,然后您可以将其用作
DBCC FREEPROCCACHE (0x0123456....);
Run Code Online (Sandbox Code Playgroud)
小智 5
以下是另一种仅针对存储过程从缓存中删除计划的方法:
DECLARE @PlanHandle VARBINARY(64);
SELECT @PlanHandle = deps.plan_handle
FROM sys.dm_exec_procedure_stats AS deps
WHERE deps.object_id = OBJECT_ID('dbo.SomeProcedureName') AND deps.database_id = DB_ID();
IF @PlanHandle IS NOT NULL
BEGIN
DBCC FREEPROCCACHE(@PlanHandle);
END
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16852 次 |
| 最近记录: |