sp_control_plan_guide (Transact-SQL)

Gilt für:SQL Server

Löscht, aktiviert oder deaktiviert eine Planhinweisliste.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

N'plan_guide_name'
Gibt die Planhinweisliste an, die gelöscht, aktiviert oder deaktiviert wird. plan_guide_name wird in die aktuelle Datenbank aufgelöst. Wenn nicht angegeben, wird standardmäßig null plan_guide_name .

DROP
Legt die von plan_guide_name angegebene Planführung ab. 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.

DROP ALL
Löscht alle Planhinweislisten in der aktuellen Datenbank. N'plan_guide_name kann nicht angegeben werden, wenn DROP ALL angegeben wird.

DISABLE
Deaktiviert die von plan_guide_name angegebene Plananleitung. Nachdem eine Planhinweisliste deaktiviert wurde, werden zukünftige Ausführungen einer Abfrage, die zuvor mit der Planhinweisliste übereingestimmt hat, nicht von dieser Liste beeinflusst.

DISABLE ALL
Deaktiviert alle Planhinweislisten in der aktuellen Datenbank. N'plan_guide_name kann nicht angegeben werden, wenn DISABLE ALL angegeben wird.

ENABLE
Aktiviert die von plan_guide_name angegebene Planführungslinie. Eine aktivierte Planhinweisliste kann mit einer geeigneten Abfrage abgeglichen werden. Planhinweislisten werden standardmäßig bei ihrer Erstellung aktiviert.

ENABLE ALL
Aktiviert alle Planhinweislisten in der aktuellen Datenbank. N'plan_guide_name**'**kann nicht angegeben werden, wenn ENABLE ALL angegeben wird.

Hinweise

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.

Das Deaktivieren einer deaktivierten bzw. das Aktivieren einer aktivierten Planhinweisliste hat keine Auswirkung und kann ausgeführt werden, ohne einen Fehler zu verursachen.

Pläneleitfäden sind in jeder Edition von Microsoft SQL Server nicht verfügbar. Eine Liste der Funktionen, die von den SQL Server-Editionen unterstützt werden, finden Sie unter Editionen und unterstützte Funktionen von SQL Server 2022. Sie können jedoch sp_control_plan_guide mit der OPTION DROP oder DROP ALL in einer beliebigen Edition von SQL Server ausführen.

Berechtigungen

Zum Ausführen sp_control_plan_guide für eine Plananleitung vom Typ OBJECT (erstellt durch Angabe @type ='OBJECT' ) ist DIE ALTER-Berechtigung für das Objekt erforderlich, auf das von der Plananleitung verwiesen wird. Für alle anderen Planhinweislisten ist die ALTER DATABASE-Berechtigung erforderlich.

Beispiele

.A Aktivieren, Deaktivieren und Löschen einer Planhinweisliste

In dem folgenden Beispiel wird eine Planhinweisliste erstellt, deaktiviert, aktiviert und gelöscht.

--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. Deaktivieren aller Planhinweislisten in der aktuellen Datenbank

In dem folgenden Beispiel werden alle Planhinweislisten in der AdventureWorks2022-Datenbank deaktiviert.

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

Weitere Informationen

Datenbank-Engine Gespeicherte Prozeduren (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Planhinweislisten