web-dev-qa-db-fra.com

Comment effacer les requêtes ad hoc du cache de plan?

Comme le titre implique, je vais supprimer uniquement des requêtes ad hoc (non préparées) du cache de plan dans SQL Server 2014/2016, car elle occupe plus de 50% de ma mémoire principale. Avez-vous une suggestion?

Merci beaucoup.

5
Commander
DECLARE @plan_handle varbinary(64)

DECLARE db_cursor CURSOR FOR 
SELECT plan_handle
FROM sys.dm_exec_cached_plans
WHERE objtype = 'Adhoc' -- and usecounts = 1 -- optional: just delete the ones that are used only once

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @plan_handle  

WHILE @@FETCH_STATUS = 0  
BEGIN  
    DBCC FREEPROCCACHE (@plan_handle);  
    FETCH NEXT FROM db_cursor INTO @plan_handle 
END 

CLOSE db_cursor  
DEALLOCATE db_cursor 
4
mhenry1384