我正在使用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....);
小智 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