sp_control_plan_guide (Transact-SQL)

Descarta, habilita ou desabilita um guia de plano.

Ícone de vínculo de tópico Convenções da sintaxe 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 será padronizado como 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 está especificado.

  • DISABLE
    Desabilita 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 está 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 está especificado.

Comentários

A tentativa de descartar ou modificar uma função, procedimento armazenado ou gatilho DML mencionado por um guia de plano, esteja ele ativado ou não, causa 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, consulte Recursos compatíveis com as edições do SQL Server 2012. 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 ou um guia de plano do tipo OBJECT (criado com a especificação de @type = 'OBJECT' ) requer permissão ALTER no objeto mencionado pelo guia de plano. Todos os outros guias de plano requerem permissão ALTER DATABASE.

Exemplos

A.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 AdventureWorks2012 .

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

Consulte também

Referência

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)

Conceitos

Guias de plano