sp_control_plan_guide (Transact-SQL)

Si applica a:SQL Server

Elimina, abilita o disabilita una guida di piano.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

N'plan_guide_name'
Viene specificata la guida di piano da eliminare, abilitare o disabilitare. plan_guide_name viene risolto nel database corrente. Se non specificato, per impostazione predefinita plan_guide_name è NULL.

DROP
Elimina la guida di piano specificata da plan_guide_name. Dopo l'eliminazione di una guida di piano, le future esecuzioni di una query a cui la guida di piano era in precedenza associata non saranno più influenzate dalla guida di piano.

DROP ALL
Elimina tutte le guide di piano nel database corrente. Impossibile specificare n'plan_guide_name quando si specifica DROP ALL.

DISABLE
Disabilita la guida di piano specificata da plan_guide_name. Dopo la disabilitazione di una guida di piano, le future esecuzioni di una query a cui la guida di piano era in precedenza associata non saranno più influenzate dalla guida di piano.

DISABLE ALL
Disabilita tutte le guide di piano nel database corrente. Impossibile specificare N'plan_guide_name quando si specifica DISABLE ALL.

ENABLE
Abilita la guida di piano specificata da plan_guide_name. Dopo che è stata abilitata, una guida di piano può essere associata a una query idonea. Per impostazione predefinita, le guide di piano vengono abilitate in fase di creazione.

ENABLE ALL
Abilita tutte le guide di piano nel database corrente. Impossibile specificare N'plan_guide_name**'**quando si specifica ENABLE ALL.

Osservazioni:

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.

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.

Le guide ai piani non sono disponibili in ogni edizione di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Edizioni e funzionalità supportate di SQL Server 2022. Tuttavia, è possibile eseguire sp_control_plan_guide con l'opzione DROP o DROP ALL in qualsiasi edizione di SQL Server.

Autorizzazioni

Per eseguire sp_control_plan_guide su una guida di piano di tipo OBJECT (creata specificando @type ='OBJECT' ) richiede l'autorizzazione ALTER per l'oggetto a cui fa riferimento la guida di piano. Per tutte le altre guide di piano è necessario disporre dell'autorizzazione ALTER DATABASE.

Esempi

R. Abilitazione, disabilitazione ed eliminazione di una guida di piano

Nell'esempio seguente viene creata, disabilitata, attivata ed eliminata una guida di piano.

--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. Disabilitazione di tutte le guide di piano nel database corrente

Nell'esempio seguente vengono disabilitate tutte le guide di piano nel database AdventureWorks2022.

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

Vedi anche

stored procedure motore di database (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Guide di piano