sys.fn_validate_plan_guide (Transact-SQL)sys.fn_validate_plan_guide (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Verifica a validade do guia de plano especificado.Verifies the validity of the specified plan guide. A função sys.fn_validate_plan_guide retorna a primeira mensagem de erro encontrada quando o guia de plano é aplicado à consulta.The sys.fn_validate_plan_guide function returns the first error message that is encountered when the plan guide is applied to its query. Um conjunto de linhas vazio será retornado quando a guia de plano for válida.An empty rowset is returned when the plan guide is valid. Guias de plano podem ficar inválidos depois que são feitas alterações ao design físico do banco de dados.Plan guides can become invalid after changes are made to the physical design of the database. Por exemplo, se um guia de plano especificar um determinado índice e esse índice depois for descartado, a consulta não poderá mais usar o guia de plano.For example, if a plan guide specifies a particular index and that index is subsequently dropped, the query will no longer be able to use the plan guide.

Validando um guia de plano, você pode determinar se o guia pode ser usado pelo otimizador sem modificação.By validating a plan guide, you can determine whether the guide can be used by the optimizer without modification. Com base nos resultados da função, você pode optar por descartar o guia de plano e redefinir a consulta ou modificar o design do banco de dados, por exemplo, recriando o índice especificado no guia de plano.Based on the results of the function, you can decide to drop the plan guide and retune the query or modify the database design, for example, by re-creating the index specified in the plan guide.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

sys.fn_validate_plan_guide ( plan_guide_id )  

ArgumentosArguments

plan_guide_idplan_guide_id
É a ID do guia de plano, conforme relatado na plan_guides exibição do catálogo.Is the ID of the plan guide as reported in the sys.plan_guides catalog view. plan_guide_id está int sem nenhum padrão.plan_guide_id is int with no default.

Tabela retornadaTable Returned

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
msgnummsgnum intint A identificação da mensagem de erro.ID of the error message.
severidadeseverity tinyinttinyint O nível de severidade da mensagem, entre 1 e 25.Severity level of the message, between 1 and 25.
statestate smallintsmallint Número de estado do erro que indica o ponto no código no qual o erro ocorreu.State number of the error indicating the point in the code in which the error occurred.
mensagemmessage nvarchar(2048)nvarchar(2048) Texto da mensagem do erro.Message text of the error.

PermissõesPermissions

Os guias de plano com escopo OBJECT exigem a permissão VIEW DEFINITION ou ALTER nas permissões e objetos mencionados para compilar a consulta ou o lote fornecido no guia de planoOBJECT-scoped plan guides require VIEW DEFINITION or ALTER permission on the referenced object and permissions to compile the query or batch that is provided in the plan guide. Por exemplo, se um lote contiver instruções SELECT, serão solicitadas permissões SELECT nos objetos mencionados.For example, if a batch contains SELECT statements, SELECT permissions on the referenced objects are required.

Os guias de plano com escopo SQL ou TEMPLATE exigem a permissão ALTER nas permissões e no banco de dados para compilar a consulta ou o lote fornecido no guia de planoSQL- or TEMPLATE-scoped plan guides require ALTER permission on the database and permissions to compile the query or batch that is provided in the plan guide. Por exemplo, se um lote contiver instruções SELECT, serão solicitadas permissões SELECT nos objetos mencionados.For example, if a batch contains SELECT statements, SELECT permissions on the referenced objects are required.

ExemplosExamples

A.A. Validando todos os guias de plano em um banco de dadosValidating all plan guides in a database

O exemplo seguinte verifica a validade de todos os guias de plano no banco de dados atual.The following example checks the validity of all plan guides in the current database. Se um conjunto de resultados vazio for retornado, todos os guias de plano serão válidos.If an empty result set is returned, all plan guides are valid.

USE AdventureWorks2012;  
GO  
SELECT plan_guide_id, msgnum, severity, state, message  
FROM sys.plan_guides  
CROSS APPLY fn_validate_plan_guide(plan_guide_id);  
GO  

B.B. Testando a validação do guia de plano antes de implementar uma alteração no banco de dadosTesting plan guide validation before implementing a change to the database

O exemplo seguinte usa uma transação explícita para descartar um índice.The following example uses an explicit transaction to drop an index. O sys.fn_validate_plan_guide função é executada para determinar se esta ação invalidará qualquer guia de plano no banco de dados.The sys.fn_validate_plan_guide function is executed to determine whether this action will invalidate any plan guides in the database. Com base nos resultados da função, a instrução DROP INDEX será confirmada ou a transação será revertida, e o índice não será descartado.Based on the results of the function, the DROP INDEX statement is either committed or the transaction is rolled back, and the index is not dropped.

USE AdventureWorks2012;  
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  

Consulte tambémSee Also

Guias de plano Plan Guides
sp_create_plan_guide (Transact-SQL) sp_create_plan_guide (Transact-SQL)
sp_create_plan_guide_from_handle (Transact-SQL)sp_create_plan_guide_from_handle (Transact-SQL)