sp_control_plan_guide (Transact-SQL)

 

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse

Löscht, aktiviert oder deaktiviert eine Planhinweisliste.

Gilt für: SQL Server (SQL Server 2008 bis zur aktuellen Version).

Topic link icon Transact-SQL-Syntaxkonventionen

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

N' plan_guide_name '
Gibt die Planhinweisliste an, die gelöscht, aktiviert oder deaktiviert wird. Plan_guide_name wird in der aktuellen Datenbank aufgelöst. Wenn nicht angegeben, Plan_guide_name der Standardwert ist NULL.

DROP
Löscht die Planhinweisliste gemäß 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.

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

DISABLE
Deaktiviert die Planhinweisliste gemäß 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.

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

ENABLE
Ermöglicht die Planhinweisliste gemäß Plan_guide_name. 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 ist.

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.

Planhinweislisten sind nicht in jeder Edition von Microsoft SQL Server. Eine Liste der Funktionen, die von den SQL Server-Editionen unterstützt werden, finden Sie unter Von den SQL Server 2016-Editionen unterstützte Funktionen. Sie können jedoch ausführen Sp_control_plan_guide mit der Drop- oder DROP ALL-Option in jeder Edition von SQL Server.

Auszuführende Sp_control_plan_guide auf eine Planhinweisliste des Typs "OBJECT" (erstellt, ** @type = "Objekt"** ) erfordert die ALTER-Berechtigung für das Objekt, das von der Planhinweisliste verwiesen wird. Für alle anderen Planhinweislisten ist die ALTER DATABASE-Berechtigung erforderlich.

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 AdventureWorks2012-Datenbank deaktiviert.

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

Gespeicherte Datenbankmodulprozeduren (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
Sp_create_plan_guide (Transact-SQL)
plan_guides (Transact-SQL)
Planhinweislisten

Community-Beiträge

HINZUFÜGEN
Anzeigen: