Eliminare una Guida del Piano

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

È possibile eliminare una guida di piano in SQL Server usando SQL Server Management Studio o Transact-SQL. Con Transact-SQL è inoltre possibile eliminare tutte le guide di piano in un database.

Contenuto dell'articolo

Prima di iniziare

Sicurezza

Autorizzazioni

L'eliminazione di una guida di piano OBJECT richiede l'autorizzazione ALTER per l'oggetto (ad esempio funzione, stored procedure) a cui fa riferimento la guida di piano. Per tutte le altre guide di piano è necessario disporre dell'autorizzazione ALTER DATABASE.

Utilizzo di SQL Server Management Studio

Per eliminare una guida di piano

  1. Fare clic sul segno più per espandere il database in cui si desidera eliminare una guida di piano, quindi fare clic sul segno più per espandere la cartella Programmabilità .

  2. Fare clic sul segno più per espandere la cartella Guide di piano .

  3. Fare clic con il pulsante destro del mouse sulla guida di piano da eliminare, quindi scegliere Elimina.

  4. Nella finestra di dialogo Elimina oggetto verificare che venga selezionata la guida di piano corretta, quindi fare clic su OK.

Utilizzo di Transact-SQL

Per eliminare una singola guida di piano:

  1. In Esplora oggetti, connettersi a un'istanza del Motore di Database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

    --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  
    

Per eliminare tutte le guide di piano in un database

  1. In Esplora oggetti, connettersi a un'istanza del Motore di Database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

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

Per altre informazioni, vedere sp_control_plan_guide (Transact-SQL).