Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Verifica a validade do guia do plano especificado. A sys.fn_validate_plan_guide função devolve a primeira mensagem de erro encontrada quando o guia de planos é aplicado à sua consulta. Um conjunto de linhas vazio é devolvido quando o guia do plano é válido. Os guias de planos podem tornar-se inválidos após alterações no design físico da base de dados. Por exemplo, se um guia de planos especificar um índice específico e esse índice for subsequentemente eliminado, a consulta deixará de poder ser utilizada pelo guia do plano.
Ao validar um guia de plano, pode determinar se o guia pode ser usado pelo otimizador sem modificações. Com base nos resultados da função, pode decidir eliminar o guia do plano e reajustar a consulta ou modificar o design da base de dados, por exemplo, recriando o índice especificado no guia do plano.
Transact-SQL convenções de sintaxe
Syntax
sys.fn_validate_plan_guide ( plan_guide_id )
Arguments
plan_guide_id
O ID do guia do plano está indicado na vista de catálogo sys.plan_guides ?
plan_guide_id é inteligência , sem padrão.
Tabela retornada
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| msgnum | int | ID da mensagem de erro. |
| severity | tinyint | Nível de gravidade da mensagem, entre 1 e 25. |
| state | smallint | O número de estado do erro indica o ponto no código em que o erro ocorreu. |
| mensagem | nvarchar(2048) | Texto da mensagem com o erro. |
Permissions
Guias de planos com âmbito de OBJETO requerem VIEW permissão DEFINITION ou ALTER sobre o objeto referenciado e permissões para compilar a consulta ou lote fornecido no guia do plano. Por exemplo, se um lote contiver instruções SELECT, são necessárias permissões SELECT nos objetos referenciados.
Guias de planos com âmbito SQL ou TEMPLATE requerem permissão ALTER na base de dados e permissões para compilar a consulta ou lote fornecida no guia do plano. Por exemplo, se um lote contiver instruções SELECT, são necessárias permissões SELECT nos objetos referenciados.
Remarks
A sys.fn_validate_plan_guide função não está disponível no Base de Dados SQL do Azure.
Examples
A. Validação de todos os guias de planos numa base de dados
O exemplo seguinte verifica a validade de todos os guias de planos na base de dados atual. Se um conjunto de resultados vazio for devolvido, todos os guias de planos são válidos.
USE AdventureWorks2022;
GO
SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY fn_validate_plan_guide(plan_guide_id);
GO
B. Validação do guia do plano de testes antes de implementar uma alteração na base de dados
O exemplo seguinte utiliza uma transação explícita para eliminar um índice. A sys.fn_validate_plan_guide função é executada para determinar se esta ação irá invalidar algum guia de plano na base de dados. Com base nos resultados da função, a DROP INDEX instrução é ou confirmada ou a transação é revertida, e o índice não é eliminado.
USE AdventureWorks2022;
GO
BEGIN TRANSACTION;
DROP INDEX IX_SalesOrderHeader_CustomerID ON Sales.SalesOrderHeader;
-- Check for invalid plan guides.
IF EXISTS (SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY sys.fn_validate_plan_guide(plan_guide_id))
ROLLBACK TRANSACTION;
ELSE
COMMIT TRANSACTION;
GO
Ver também
Guias do Plano
sp_create_plan_guide (Transact-SQL)
sp_create_plan_guide_from_handle (Transact-SQL)