Abilitare o disabilitare una guida di piano

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

È possibile disabilitare e abilitare le guide di piano in SQL Server usando SQL Server Management Studio o Transact-SQL. È possibile abilitare o disabilitare una sola guida di piano o tutte le guide di piano in un database.

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

  • Se si tenta di eliminare o modificare una funzione, una stored procedure o un trigger DML a cui viene fatto riferimento in una guida di piano abilitata o disabilitata, viene generato un errore. Verificare sempre le dipendenze prima di eliminare o modificare uno degli oggetti indicati sopra.

  • La disabilitazione di una guida di piano disabilitata o l'abilitazione di una guida di piano abilitata non ha alcun effetto e viene eseguita senza la restituzione di un errore.

Sicurezza

Autorizzazioni

La disabilitazione o l'abilitazione 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 disabilitare o abilitare una guida di piano

  1. Fare clic sul segno più per espandere il database in cui si desidera disabilitare o abilitare 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 disabilitare o abilitare e scegliere Abilita o Disabilita.

  4. Nella finestra di dialogo Disabilita guida di piano o Abilita guida di piano , verificare che l'azione scelta venga completata correttamente, quindi fare clic su Chiudi.

Per disabilitare o abilitare tutte le guide di piano in un database

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

  2. Fare clic con il pulsante destro del mouse sulla cartella Guide di piano , quindi scegliere Abilita tutto o Disabilita tutto.

  3. Nella finestra di dialogo Disabilita tutte le guide di piano o Abilita tutte le guide di piano , verificare che l'azione scelta venga completata correttamente, quindi fare clic su Chiudi.

Utilizzo di Transact-SQL

Per disabilitare o abilitare una 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''))';  
    --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  
    
    

Per disabilitare o abilitare 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.

    --Disable all plan guides in the database.  
    EXEC sp_control_plan_guide N'DISABLE ALL';  
    GO  
    --Enable all plan guides in the database.  
    EXEC sp_control_plan_guide N'ENABLE ALL';  
    GO  
    
    

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