Abilitare o disabilitare una guida di pianoEnable or Disable a Plan Guide

È possibile disabilitare e abilitare guide di piano in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.You can disable and enable plan guides in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. È possibile abilitare o disabilitare una sola guida di piano o tutte le guide di piano in un database.Either a single plan guides or all plan guides in a database can be enabled or disabled.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • 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.Trying to drop or modify a function, stored procedure, or DML trigger that is referenced by a plan guide, either enabled or disabled, causes an error. Verificare sempre le dipendenze prima di eliminare o modificare uno degli oggetti indicati sopra.Always check for dependencies before dropping or modifying any of the objects listed above.

  • 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.Disabling a disabled plan guide or enabling an enabled plan guide has no effect and runs without error.

Sicurezza Security

Autorizzazioni Permissions

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.Disabling or enabling an OBJECT plan guide requires ALTER permission on the object (for example: function, stored procedure) that is referenced by the plan guide. Per tutte le altre guide di piano è necessario disporre dell'autorizzazione ALTER DATABASE.All other plan guides require ALTER DATABASE permission.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per disabilitare o abilitare una guida di pianoTo disable or enable a plan guide

  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à .Click the plus sign to expand the database in which you want to disable or enable a plan guide, and then click the plus sign to expand the Programmability folder.

  2. Fare clic sul segno più per espandere la cartella Guide di piano .Click the plus sign to expand the Plan Guides folder.

  3. Fare clic con il pulsante destro del mouse sulla guida di piano da disabilitare o abilitare e scegliere Abilita o Disabilita.Right-click the plan guide you want to disable or enable and select either Disable or Enable.

  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.In either the Disable Plan Guide or Enable Plan Guide dialog box, verify that the chosen action was successful and then click Close.

Per disabilitare o abilitare tutte le guide di piano in un databaseTo disable or enable all plan guides in a 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à .Click the plus sign to expand the database in which you want to disable or enable a plan guide, and then click the plus sign to expand the Programmability folder.

  2. Fare clic con il pulsante destro del mouse sulla cartella Guide di piano , quindi scegliere Abilita tutto o Disabilita tutto.Right-click the Plan Guides folder and then select either Enable All or Disable All.

  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.In either the Disable all Plan Guides or Enable all Plan Guides dialog box, verify that the chosen action was successful and then click Close.

Utilizzo di Transact-SQL Using Transact-SQL

Per disabilitare o abilitare una guida di pianoTo disable or enable a plan guide

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    --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 databaseTo disable or enable all plan guides in a database

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    --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).For more information, see sp_control_plan_guide (Transact-SQL).