DBCC FREEPROCCACHE (Transact-SQL)DBCC FREEPROCCACHE (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Entfernt alle Elemente aus dem Plancache, entfernt einen bestimmten Plan aus dem Plancache durch Angabe eines Planhandles oder SQL-Handles oder entfernt alle einem angegebenen Ressourcenpool zugeordneten Cacheinträge.Removes all elements from the plan cache, removes a specific plan from the plan cache by specifying a plan handle or SQL handle, or removes all cache entries associated with a specified resource pool.

Hinweis

Die Ausführungsstatistik für systemintern kompilierte gespeicherte Prozeduren wird durch DBCC FREEPROCCACHE nicht gelöscht.DBCC FREEPROCCACHE does not clear the execution statistics for natively compiled stored procedures. Der Prozedurcache enthält keine Informationen zu systemintern kompilierten gespeicherten Prozeduren.The procedure cache does not contain information about natively compiled stored procedures. Jede Ausführungsstatistik, die Prozedur erfasst wird in die Ausführungsstatistik DMVs angezeigt: Sys. dm_exec_procedure_stats ( Transact-SQL ) und dm_exec_query_plan ( Transact-SQL ) .Any execution statistics collected from procedure executions will appear in the execution statistics DMVs: sys.dm_exec_procedure_stats (Transact-SQL) and sys.dm_exec_query_plan (Transact-SQL).

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

Die Syntax für SQLServer:Syntax for SQL Server:

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]  

Die Syntax für Azure SQL Datawarehouse und Parallel Datawarehouse:Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse:

DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ] 
     [ WITH NO_INFOMSGS ]   
[;]  

ArgumenteArguments

({ Plan_handle | Sql_handle | Pool_name })( { plan_handle | sql_handle | pool_name } )
Plan_handle identifiziert eindeutig einen Abfrageplan für einen Batch, die ausgeführt wurde, dessen Plan sich im Plancache befindet.plan_handle uniquely identifies a query plan for a batch that has executed and whose plan resides in the plan cache. Plan_handle ist varbinary(64) und kann aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:plan_handle is varbinary(64) and can be obtained from the following dynamic management objects:

Sql_handle ist der SQL-Handle der zu löschenden Batch.sql_handle is the SQL handle of the batch to be cleared. Sql_handle ist varbinary(64) und kann aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:sql_handle is varbinary(64) and can be obtained from the following dynamic management objects:

Pool_name ist der Name eines Ressourcenpools der Ressourcenkontrolle.pool_name is the name of a Resource Governor resource pool. Pool_name ist Sysname und abgerufen werden können, indem Sie Abfragen der dm_resource_governor_resource_pools -verwaltungssicht.pool_name is sysname and can be obtained by querying the sys.dm_resource_governor_resource_pools dynamic management view.
Um einen Ressourcenpool eine Arbeitsauslastungsgruppe der Ressourcenkontrolle zuzuordnen, Fragen Sie die dm_resource_governor_workload_groups -verwaltungssicht.To associate a Resource Governor workload group with a resource pool, query the sys.dm_resource_governor_workload_groups dynamic management view. Informationen über die Arbeitsauslastungsgruppe für eine Sitzung durch Abfragen der Sys. dm_exec_sessions -verwaltungssicht.For information about the workload group for a session, query the sys.dm_exec_sessions dynamic management view.

WITH NO_INFOMSGSWITH NO_INFOMSGS
Alle Informationsmeldungen werden unterdrückt.Suppresses all informational messages.

COMPUTECOMPUTE
Löschen Sie von jeder Serverknoten Abfrageplancache befinden.Purge the query plan cache from each Compute node. Dies ist der Standardwert.This is the default value.

ALLALL
Löschen Sie auf jedem Knoten der COMPUTE- und aus dem Knoten "Zugriffssteuerung" Abfrageplancache befinden.Purge the query plan cache from each Compute node and from the Control node.

Hinweis

Beginnend mit SQL Server 2016SQL Server 2016, die ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE der Prozedurcache (Plan) für die Datenbank im Bereich zu löschen.Starting with SQL Server 2016SQL Server 2016, the ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE to clear the procedure (plan) cache for the database in scope.

HinweiseRemarks

Verwenden Sie DBCC FREEPROCCACHE, um den Plancache sorgfältig zu leeren.Use DBCC FREEPROCCACHE to clear the plan cache carefully. Löschen die Prozedur (Plan), dass der Cache bewirkt, dass alle Pläne zur Entfernung und eingehenden Abfrageprotokolls Ausführungen einen neuen Plan kompiliert werden, statt alle zuvor zwischengespeicherten Plan erneut zu.Clearing the procedure (plan) cache causes all plans to be evicted, and incoming query executions will compile a new plan, instead of reusing any previously cached plan.

Dies kann dazu führen, dass eine plötzliche, vorübergehenden Abnahme der Leistung von Abfragen, die Anzahl der neuen Kompilierungen steigt.This can cause a sudden, temporary decrease in query performance as the number of new compilations increases. Für jeden geleerten Cachespeicher im Plancache die SQL ServerSQL Server -Fehlerprotokoll enthält die folgende Meldung zur Information: " SQL ServerSQL Server wurden %d Leerungen des Cachespeichers für die '%s'-Cachespeicher (Bestandteil des Plancache) aufgrund von ' DBCC FREEPROCCACHE' oder 'DBCC FREESYSTEMCACHE'-Vorgängen. "For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log will contain the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations." Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.This message is logged every five minutes as long as the cache is flushed within that time interval.

Der Prozedurcache wird außerdem durch die folgenden Neukonfigurierungsvorgänge gelöscht:The following reconfigure operations also clear the procedure cache:

  • access check cache bucket countaccess check cache bucket count
  • access check cache quotaaccess check cache quota
  • clr enabledclr enabled
  • cost threshold for parallelismcost threshold for parallelism
  • cross db ownership chainingcross db ownership chaining
  • index create memoryindex create memory
  • max degree of parallelismmax degree of parallelism
  • Max. Serverarbeitspeichermax server memory
  • max text repl sizemax text repl size
  • max worker threadsmax worker threads
  • Min. Arbeitsspeicher pro Abfragemin memory per query
  • Min. Serverarbeitsspeichermin server memory
  • query governor cost limitquery governor cost limit
  • query waitquery wait
  • remote query timeoutremote query timeout
  • user optionsuser options

ResultsetsResult Sets

Wenn die WITH NO_INFOMSGS-Klausel nicht angegeben ist, gibt DBCC FREEPROCCACHE zurück: "DBCC-Ausführung wurde abgeschlossen.When the WITH NO_INFOMSGS clause is not specified, DBCC FREEPROCCACHE returns: "DBCC execution completed. Falls DBCC Fehlermeldungen ausgegeben hat, wenden Sie sich an den Systemadministrator."If DBCC printed error messages, contact your system administrator."

BerechtigungenPermissions

Gilt für: SQL ServerSQL Server, Parallel Data WarehouseParallel Data WarehouseApplies to: SQL ServerSQL Server, Parallel Data WarehouseParallel Data Warehouse

  • Erfordert die ALTER SERVER STATE-Berechtigung auf dem Server.Requires ALTER SERVER STATE permission on the server.

Gilt für: SQL Data WarehouseSQL Data WarehouseApplies to: SQL Data WarehouseSQL Data Warehouse

  • Erfordert die Mitgliedschaft in der festen Serverrolle "DB_OWNER".Requires membership in the DB_OWNER fixed server role.

Allgemeine Hinweise für SQL Data WarehouseSQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseGeneral Remarks for SQL Data WarehouseSQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

DBCC FREEPROCCACHE Befehlsfolge können gleichzeitig ausgeführt werden.Multiple DBCC FREEPROCCACHE commands can be run concurrently. In SQL Data WarehouseSQL Data Warehouse oder Parallel Data WarehouseParallel Data Warehouse, das Löschen des Zwischenspeichers Plan kann eine temporäre Verringerung der abfrageleistung verursachen, wie eingehende Abfragen einen neuen Plan zu kompilieren, statt erneut zu einem zuvor Plan zwischengespeichert.In SQL Data WarehouseSQL Data Warehouse or Parallel Data WarehouseParallel Data Warehouse, clearing the plan cache can cause a temporary decrease in query performance as incoming queries compile a new plan, instead of reusing any previously cached plan.

DBCC FREEPROCCACHE (RECHENLOGIK) nur bewirkt, dass SQL ServerSQL Server Abfragen neu kompiliert, wenn sie auf den Serverknoten ausgeführt werden.DBCC FREEPROCCACHE (COMPUTE) only causes SQL ServerSQL Server to recompile queries when they are run on the Compute nodes. Er führt nicht dazu, dass SQL Data WarehouseSQL Data Warehouse oder Parallel Data WarehouseParallel Data Warehouse So kompilieren Sie den parallelen Abfrageplan, der generiert wird, auf den Knoten "Zugriffssteuerung".It does not cause SQL Data WarehouseSQL Data Warehouse or Parallel Data WarehouseParallel Data Warehouse to recompile the parallel query plan that is generated on the Control node. DBCC FREEPROCCACHE kann während der Ausführung abgebrochen werden.DBCC FREEPROCCACHE can be cancelled during execution.

Einschränkungen für SQL Data WarehouseSQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseLimitations and Restrictions for SQL Data WarehouseSQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

DBCC FREEPROCCACHE kann nicht innerhalb einer Transaktion ausgeführt.DBCC FREEPROCCACHE can not run within a transaction. DBCC FREEPROCCAHCE wird in einer EXPLAIN-Anweisung nicht unterstützt.DBCC FREEPROCCAHCE is not supported in an EXPLAIN statement.

Metadaten für SQL Data WarehouseSQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseMetadata for SQL Data WarehouseSQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

Die Systemsicht sys.pdw_exec_requests wird eine neue Zeile hinzugefügt, wenn DBCC FREEPROCCACHE ausgeführt wird.A new row is added to the sys.pdw_exec_requests system view when DBCC FREEPROCCACHE is run.

Beispiele: SQL ServerSQL ServerExamples: SQL ServerSQL Server

A.A. Löschen eines Abfrageplans im PlancacheClearing a query plan from the plan cache

Im folgenden Beispiel wird ein Abfrageplan im Plancache gelöscht, indem das Abfrageplanhandle angegeben wird.The following example clears a query plan from the plan cache by specifying the query plan handle. Um sicherzustellen, dass die Beispielabfrage im Plancache vorhanden ist, wird die Abfrage zuerst ausgeführt.To ensure the example query is in the plan cache, the query is first executed. Die sys.dm_exec_cached_plans und sys.dm_exec_sql_text dynamische Verwaltungssichten werden abgefragt, um das planhandle für die Abfrage zurückgeben.The sys.dm_exec_cached_plans and sys.dm_exec_sql_text dynamic management views are queried to return the plan handle for the query.

Der Planhandlewert aus dem Resultset wird dann in die DBCC FREEPROCACHE-Anweisung eingefügt, sodass nur dieser Plan aus dem Plancache entfernt wird.The plan handle value from the result set is then inserted into the DBCC FREEPROCACHE statement to remove only that plan from the plan cache.

USE AdventureWorks2012;  
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  

Im Folgenden finden Sie das Resultset.Here is the result set.

plan_handle                                         text  
--------------------------------------------------  -----------------------------  
0x060006001ECA270EC0215D05000000000000000000000000  SELECT * FROM Person.Address;  

(1 row(s) affected)
-- Remove the specific plan from the cache.  
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);  
GO  

B.B. Löschen aller Pläne im PlancacheClearing all plans from the plan cache

Im folgenden Beispiel werden alle Elemente im Plancache gelöscht.The following example clears all elements from the plan cache. Die WITH NO_INFOMSGS -Klausel angegeben ist, um zu verhindern, dass die Meldung angezeigt wird.The WITH NO_INFOMSGS clause is specified to prevent the information message from being displayed.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;  

C.C. Löschen aller einem Ressourcenpool zugeordneten CacheeinträgeClearing all cache entries associated with a resource pool

Im folgenden Beispiel werden alle einem angegebenen Ressourcenpool zugeordneten Cacheeinträge gelöscht.The following example clears all cache entries associated with a specified resource pool. Die sys.dm_resource_governor_resource_pools Ansicht wird zuerst abgefragt, um Abrufen des Werts für Pool_name.The sys.dm_resource_governor_resource_pools view is first queried to obtain the value for pool_name.

SELECT * FROM sys.dm_resource_governor_resource_pools;  
GO  
DBCC FREEPROCCACHE ('default');  
GO  

Beispiele: SQL Data WarehouseSQL Data Warehouse und Parallel Data WarehouseParallel Data WarehouseExamples: SQL Data WarehouseSQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

D.D. Beispiele für DBCC FREEPROCCACHE die grundlegende SyntaxDBCC FREEPROCCACHE Basic Syntax Examples

Im folgende Beispiel entfernt alle vorhandenen Caches für die Abfrage-Plan von den Computeknoten.The following example removes all existing query plan caches from the Compute nodes. Obwohl der Kontext auf UserDbSales festgelegt ist, werden die Compute-Knoten Abfrage Plan Caches für alle Datenbanken entfernt werden wird.Although the context is set to UserDbSales, the Compute node query plan caches for all databases will will be removed. Die WITH NO_INFOMSGS-Klausel wird verhindert, dass informationsmeldungen in die Ergebnisse angezeigt werden.The WITH NO_INFOMSGS clause prevents informational messages from appearing in the results.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;

Das folgende Beispiel enthält die gleichen Ergebnisse wie im vorherigen Beispiel, außer dass informationsmeldungen in die Ergebnisse angezeigt werden.The following example has the same results as the previous example, except that informational messages will show in the results.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE);  

Wenn informationsmeldungen angefordert werden, und die Ausführung erfolgreich ist, müssen die Ergebnisse der Abfrage eine Zeile pro Compute-Knoten.When informational messages are requested and the execution is successful, the query results will have one line per Compute node.

E.E. Erteilen von Berechtigungen zum Ausführen von DBCC FREEPROCCACHEGranting Permission to run DBCC FREEPROCCACHE

Im folgenden Beispiel wird die Anmeldung David Berechtigung zum Ausführen von DBCC FREEPROCCACHE.The following example gives the login David permission to run DBCC FREEPROCCACHE.

GRANT ALTER SERVER STATE TO David; 
GO

Siehe auchSee Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
RessourcenkontrolleResource Governor
ALTER DATABASE ausgelegte CONFIGURATION ( Transact-SQL )ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)