sp_control_plan_guide (Transact-SQL)

Aplica-se a:SQL Server

Descarta, habilita ou desabilita um guia de plano.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

N'plan_guide_name'
Especifica o guia de plano que está descartado, habilitado ou desabilitado. plan_guide_name é resolvido para o banco de dados atual. Se não for especificado, plan_guide_name padrão será NULL.

DROP
Descarta o guia de plano especificado por plan_guide_name. Após um guia de plano ser descartado, as execuções futuras de uma consulta anteriormente equivalente ao guia de plano não serão influenciadas pelo guia de plano.

DROP ALL
Descarta todos os guias de plano no banco de dados atual. N'plan_guide_name não pode ser especificado quando DROP ALL é especificado.

DISABLE
Desativa o guia de plano especificado por plan_guide_name. Após um guia de plano ser desabilitado, as execuções futuras de uma consulta anteriormente equivalente ao guia de plano não serão influenciadas pelo guia de plano.

DISABLE ALL
Desabilita todos os guias de plano no banco de dados atual. N'plan_guide_name não pode ser especificado quando DISABLE ALL é especificado.

ENABLE
Habilita o guia de plano especificado por plan_guide_name. Um guia de plano pode ser vinculado a uma consulta elegível após ser habilitado. Por padrão, os guias de plano são habilitados no momento de sua criação.

ENABLE ALL
Habilita todos os guias de plano no banco de dados atual. N'plan_guide_name**'**não pode ser especificado quando ENABLE ALL é especificado.

Comentários

A tentativa de cancelar ou modificar uma função, procedimento armazenado ou gatilho DML referenciado por um guia de plano, habilitado ou desabilitado, provoca um erro.

A desabilitação de um guia de plano desabilitado ou a habilitação de um guia de plano habilitado não tem nenhum efeito e ocorre sem erro.

Os guias de planos não estão disponíveis em todas as edições do Microsoft SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, confira Edições e recursos com suporte no SQL Server 2022. No entanto, você pode executar sp_control_plan_guide com a opção DROP ou DROP ALL em qualquer edição do SQL Server.

Permissões

Para executar sp_control_plan_guide em um guia de plano do tipo OBJECT (criado especificando @type ='OBJECT' ) requer permissão ALTER no objeto que é referenciado pelo guia de plano. Todos os outros guias de plano requerem permissão ALTER DATABASE.

Exemplos

R. Habilitando, desabilitando e descartando um guia de plano

O exemplo seguinte cria um guia de plano, desabilita-o, habilita-o e o descarta.

--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. Desabilitando todos os guias de plano no banco de dados atual

O exemplo seguinte desabilita todos os guias de plano no banco de dados AdventureWorks2022.

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

Confira também

Procedimentos armazenados do mecanismo de banco de dados (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Guias de plano