sp_control_plan_guide (Transact-SQL)sp_control_plan_guide (Transact-SQL)

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Löscht, aktiviert oder deaktiviert eine Planhinweisliste.Drops, enables, or disables a plan guide.

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

SyntaxSyntax

  
sp_control_plan_guide [ @operation = ] N'<control_option>'  
  [ , [ @name = ] N'plan_guide_name' ]  
  
<control_option>::=  
{   
    DROP   
  | DROP ALL  
  | DISABLE  
  | DISABLE ALL  
  | ENABLE   
  | ENABLE ALL  
}  

ArgumenteArguments

N' Plan_guide_name "N' plan_guide_name '
Gibt die Planhinweisliste an, die gelöscht, aktiviert oder deaktiviert wird.Specifies the plan guide that is being dropped, enabled, or disabled. Plan_guide_name wird in der aktuellen Datenbank aufgelöst.plan_guide_name is resolved to the current database. Wenn nicht angegeben, Plan_guide_name der Standardwert ist NULL.If not specified, plan_guide_name defaults to NULL.

DROPDROP
Löscht die Planhinweisliste, die anhand des Plan_guide_name.Drops the plan guide specified by plan_guide_name. Nachdem eine Planhinweisliste gelöscht wurde, werden zukünftige Ausführungen einer Abfrage, die zuvor mit der Planhinweisliste übereingestimmt hat, nicht von dieser Liste beeinflusst.After a plan guide is dropped, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DROP ALLDROP ALL
Löscht alle Planhinweislisten in der aktuellen Datenbank.Drops all plan guides in the current database. N' Plan_guide_name kann nicht angegeben werden, wenn DROP ALL angegeben wird.N'plan_guide_name cannot be specified when DROP ALL is specified.

DISABLEDISABLE
Deaktiviert die Planhinweisliste, die anhand des Plan_guide_name.Disables the plan guide specified by plan_guide_name. Nachdem eine Planhinweisliste deaktiviert wurde, werden zukünftige Ausführungen einer Abfrage, die zuvor mit der Planhinweisliste übereingestimmt hat, nicht von dieser Liste beeinflusst.After a plan guide is disabled, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DISABLE ALLDISABLE ALL
Deaktiviert alle Planhinweislisten in der aktuellen Datenbank.Disables all plan guides in the current database. N' Plan_guide_name kann nicht angegeben werden, wenn DISABLE ALL angegeben wird.N'plan_guide_name cannot be specified when DISABLE ALL is specified.

ENABLEENABLE
Ermöglicht die Planhinweisliste, die anhand des Plan_guide_name.Enables the plan guide specified by plan_guide_name. Eine aktivierte Planhinweisliste kann mit einer geeigneten Abfrage abgeglichen werden.A plan guide can be matched with an eligible query after it is enabled. Planhinweislisten werden standardmäßig bei ihrer Erstellung aktiviert.By default, plan guides are enabled at the time they are created.

ENABLE ALLENABLE ALL
Aktiviert alle Planhinweislisten in der aktuellen Datenbank.Enables all plan guides in the current database. N' Plan_guide_name " kann nicht angegeben werden, wenn ENABLE ALL angegeben wird.N'plan_guide_name' cannot be specified when ENABLE ALL is specified.

HinweiseRemarks

Das Löschen oder Ändern einer Funktion, einer gespeicherten Prozedur oder eines DML-Triggers, auf die bzw. den in einer Planhinweisliste verwiesen wird, verursacht einen Fehler.Trying to drop or modify a function, stored procedure, or DML trigger that is referenced by a plan guide, either enabled or disabled, causes an error.

Das Deaktivieren einer deaktivierten bzw. das Aktivieren einer aktivierten Planhinweisliste hat keine Auswirkung und kann ausgeführt werden, ohne einen Fehler zu verursachen.Disabling a disabled plan guide or enabling an enabled plan guide has no effect and runs without error.

Planhinweislisten sind nicht in jeder Edition von MicrosoftMicrosoft SQL ServerSQL Server.Plans guides are not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. Eine Liste der Funktionen, die von den SQL ServerSQL Server-Editionen unterstützt werden, finden Sie unter Editionen und unterstütze Funktionen für den SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016. Sie können jedoch ausführen Sp_control_plan_guide mit der Drop- oder DROP ALL-Option in keiner Edition von SQL ServerSQL Server.However, you can execute sp_control_plan_guide with the DROP or DROP ALL option in any edition of SQL ServerSQL Server.

BerechtigungenPermissions

Auszuführende Sp_control_plan_guide auf eine Planhinweisliste des Typs "OBJECT" (erstellt durch angeben @type =' Objekt " ) erfordert die ALTER-Berechtigung für das Objekt, das wird von der Planhinweisliste verwiesen wird.To execute sp_control_plan_guide on a plan guide of type OBJECT (created specifying @type =' OBJECT ' ) requires ALTER permission on the object that is referenced by the plan guide. Für alle anderen Planhinweislisten ist die ALTER DATABASE-Berechtigung erforderlich.All other plan guides require ALTER DATABASE permission.

BeispieleExamples

A.A. Aktivieren, Deaktivieren und Löschen einer PlanhinweislisteEnabling, disabling and dropping a plan guide

In dem folgenden Beispiel wird eine Planhinweisliste erstellt, deaktiviert, aktiviert und gelöscht.The following example creates a plan guide, disables it, enables it, and drops it.

--Create a procedure on which to define the plan guide.  
IF OBJECT_ID(N'Sales.GetSalesOrderByCountry', N'P') IS NOT NULL  
    DROP PROCEDURE Sales.GetSalesOrderByCountry;  
GO  
CREATE PROCEDURE Sales.GetSalesOrderByCountry   
    (@Country nvarchar(60))  
AS  
BEGIN  
    SELECT *  
    FROM Sales.SalesOrderHeader AS h   
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID  
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID  
    WHERE t.CountryRegionCode = @Country;  
END  
GO  
--Create the plan guide.  
EXEC sp_create_plan_guide N'Guide3',  
    N'SELECT *  
    FROM Sales.SalesOrderHeader AS h   
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID  
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID  
    WHERE t.CountryRegionCode = @Country',  
    N'OBJECT',  
    N'Sales.GetSalesOrderByCountry',  
    NULL,  
    N'OPTION (OPTIMIZE FOR (@Country = N''US''))';  
GO  
--Disable the plan guide.  
EXEC sp_control_plan_guide N'DISABLE', N'Guide3';  
GO  
--Enable the plan guide.  
EXEC sp_control_plan_guide N'ENABLE', N'Guide3';  
GO  
--Drop the plan guide.  
EXEC sp_control_plan_guide N'DROP', N'Guide3';  

B.B. Deaktivieren aller Planhinweislisten in der aktuellen DatenbankDisabling all plan guides in the current database

In dem folgenden Beispiel werden alle Planhinweislisten in der AdventureWorks2012AdventureWorks2012-Datenbank deaktiviert.The following example disables all plan guides in the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012;  
GO  
EXEC sp_control_plan_guide N'DISABLE ALL';  

Siehe auchSee Also

Datenbank-Engine gespeicherten Prozeduren (Transact-SQL) Database Engine Stored Procedures (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL) System Stored Procedures (Transact-SQL)
sp_create_plan_guide (Transact-SQL) sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL) sys.plan_guides (Transact-SQL)
PlanhinweislistenPlan Guides