Löschen einer Planhinweisliste

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Sie können eine Plananleitung in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL löschen (ablegen). Mit Transact-SQL können Sie auch alle Planhandbücher in einer Datenbank löschen.

In diesem Thema

Vorbereitungen

Sicherheit

Berechtigungen

Das Löschen einer OBJECT-Planhinweisliste erfordert die ALTER-Berechtigung für das Objekt (z. B. Funktion, gespeicherte Prozedur), auf das von der Planhinweisliste verwiesen wird. Für alle anderen Planhinweislisten ist die ALTER DATABASE-Berechtigung erforderlich.

Verwendung von SQL Server Management Studio

So löschen Sie eine Planhinweisliste

  1. Klicken Sie auf das Pluszeichen, um die Datenbank zu erweitern, in der Sie eine Planhinweisliste löschen möchten, und klicken Sie dann auf das Pluszeichen, um den Ordner Programmierbarkeit zu erweitern.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Planhinweislisten zu erweitern.

  3. Klicken Sie mit der rechten Maustaste auf die Planhinweisliste, die Sie löschen möchten, und klicken Sie dann auf Löschen.

  4. Stellen Sie im Dialogfeld Objekt löschen sicher, dass die richtige Planhinweisliste ausgewählt ist, und klicken Sie dann auf OK.

Verwenden von Transact-SQL

So löschen Sie eine einzelne Planhinweisliste

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    --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  
    --Drop the plan guide.  
    EXEC sp_control_plan_guide N'DROP', N'Guide3';  
    GO  
    

So löschen Sie alle Planhinweislisten in einer Datenbank

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

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

Weitere Informationen finden Sie unter sp_control_plan_guide (Transact-SQL).