Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
O sp_control_plan_guide procedimento armazenado do sistema é usado para eliminar, ativar ou desativar um guia de plano.
Transact-SQL convenções de sintaxe
Sintaxe
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Arguments
[ @name = ] N'nome'
Especifica o guia do plano que está a ser eliminado, ativado ou desativado.
@name é sysname, com um padrão de NULL.
@name é resolvido para a base de dados atual. Se não especificado, @name por defeito para NULL.
[ @operation = ] { N'DROP [ TODOS ]' | N'DESATIVAR [ TODOS ]' | N'ENABLE [ TODOS ]' }
A operação a realizar segundo o guia do plano especificado em @name. @operation é nvarchar(60), sem padrão.
DROPElimina o guia do plano especificado pela @name. Depois de um guia de planos ser eliminado, as execuções futuras de uma consulta anteriormente correspondida pelo guia de planos não são influenciadas pelo guia de plano.
DROP ALLElimina todos os guias de planos na base de dados atual. @name não pode ser especificado quando
DROP ALLé especificado.DISABLEDesativa o guia do plano especificado por @name. Depois de um guia de plano ser desativado, as execuções futuras de uma consulta anteriormente correspondida pelo guia de planos não são influenciadas pelo guia de plano.
DISABLE ALLDesativa todos os guias de planos na base de dados atual. @name não pode ser especificado quando
DISABLE ALLé especificado.ENABLEAtiva o guia do plano especificado por @name. Um guia de plano pode ser associado a uma consulta elegível depois de ativado. Por defeito, os guias de planos estão ativados no momento em que são criados.
ENABLE ALLAtiva todos os guias de planos na base de dados atual. @name não pode ser especificado quando
ENABLE ALLé especificado.
Observações
Tentar remover ou modificar uma função, procedimento armazenado ou gatilho DML referenciado por um guia de plano, seja ele habilitado ou desativado, resulta num erro.
Desativar um guia de plano desativado ou ativar um guia de plano ativado não tem efeito e funciona sem erro.
Os guias de planos não estão disponíveis em todas as edições do SQL Server. Para obter uma lista de funcionalidades suportadas pelas edições do SQL Server, consulte Edições e funcionalidades suportadas do SQL Server 2022. No entanto, pode executar sp_control_plan_guide com a DROP opção ou DROP ALL em qualquer edição do SQL Server.
Permissions
Executar sp_control_plan_guide um guia de planta do tipo OBJECT (criado a @type = '<object>'especificar ) requer ALTER permissão sobre o objeto referenciado pelo guia de planta. Todos os outros guias de planos requerem ALTER DATABASE autorização.
Examples
A. Ativar, desativar e largar um guia de plano
O exemplo seguinte cria um guia de plano, desativa-o, ativa-o e depois retira-o.
--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.
EXECUTE 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.
EXECUTE sp_control_plan_guide N'DISABLE',
N'Guide3';
GO
--Enable the plan guide.
EXECUTE sp_control_plan_guide N'ENABLE',
N'Guide3';
GO
--Drop the plan guide.
EXECUTE sp_control_plan_guide N'DROP',
N'Guide3';
GO
B. Desative todos os guias de planos na base de dados atual
O exemplo seguinte desativa todos os guias de planos na AdventureWorks2025 base de dados.
USE AdventureWorks2022;
GO
EXECUTE sp_control_plan_guide N'DISABLE ALL';