Solución:
DBCC FreeProcCache
tiene un único argumento opcional: el ID del plan de ejecución que desea eliminar.
Puede encontrar el plan que desea eliminar usando sys.dm_exec_cached_plans
, y luego puedes usarlo como
DBCC FREEPROCCACHE (0x0123456....);
solo encuentra el plan usando esta consulta y limpia el plan_handle
SELECT [text], cp.size_in_bytes, plan_handle
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE cp.cacheobjtype = N'Compiled Plan'
AND cp.objtype = N'Adhoc'
AND cp.usecounts = 1
ORDER BY cp.size_in_bytes DESC;
DBCCFREEPROCCACHE(0x0600010069AB592540C10089000000000000000000000000)
Plan_handle
Aquí hay otra forma de eliminar el plan de la caché solo para un procedimiento almacenado:
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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)