Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Applies to:SQL Server
Details
| Attribute | Value |
|---|---|
| Product Name | SQL Server |
| Event ID | 2814 |
| Event Source | MSSQLSERVER |
| Component | SQLEngine |
| Symbolic Name | PR_POSSIBLE_INFINITE_RECOMPILE |
| Message Text | Uma possível recompilação infinita foi detectada para SQLHANDLE %hs, PlanHandle %hs, deslocamento inicial %d, deslocamento final %d. O último motivo da recompilação foi %d. |
Explanation
Uma ou mais instruções fizeram com que o lote de consultas fosse recompilado pelo menos 50 vezes. A instrução especificada deve ser corrigida para evitar mais recompilações.
A tabela a seguir lista os motivos da recompilação.
| Reason code | Description |
|---|---|
| 1 | Schema changed |
| 2 | Statistics changed |
| 3 | Deferred compile |
| 4 | Definir alteração de opção |
| 5 | Tabela temp alterada |
| 6 | Conjunto de linhas remoto alterado |
| 7 | Para permissões de navegação alteradas |
| 8 | Ambiente de notificação de consulta alterado |
| 9 | PartitionView changed |
| 10 | Opções de cursor alteradas |
| 11 | Opção (recompilar) solicitada |
| 12 | Plano parametrizado liberado |
| 13 | Linearização do plano de teste |
| 14 | Plano que afeta a versão do banco de dados alterado |
| 15 | Plano do Repositório de Consultas forçando a alteração da política |
| 16 | Falha ao forçar o plano do Repositório de Consultas |
| 17 | Repositório de Consultas sem o plano |
| 18 | Recompilação necessária de execução intercalada |
| 19 | Não é um recompilação |
| 20 | Dicas do Repositório de Consultas alteradas |
| 21 | Falha no aplicativo de dicas do Repositório de Consultas |
| 22 | Recompilação do Repositório de Consultas para capturar a consulta do cursor |
| 23 | Recompilando para limpar o plano de dispatcher multiplano |
Para exibir todos os códigos de compilação, execute a seguinte consulta de exibição de gerenciamento dinâmico:
SELECT * FROM sys.dm_xe_map_values
WHERE name LIKE '%compile%cause%';
User action
Para exibir a instrução que causa a recompilação, execute a consulta a seguir. Replace the sql_handle, starting_offset, ending_offset, and plan_handle placeholders with the values specified in the error message. As
database_namecolunas e asobject_namecolunas sãoNULLpara instruções Transact-SQL ad hoc e preparadas.SELECT DB_NAME(st.dbid) AS database_name, OBJECT_NAME(st.objectid) AS object_name, st.text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(0x01000600B74C2A1300D2582A2100000000000000000000000000000000000000000000000000000000000000 /* replace the 0x01000600B... value with the actual sql_handle */ ) AS st WHERE qs.statement_start_offset = 123 /* replace 123 with actual starting_offset value */ AND qs.statement_end_offset = 456 /* replace 456 with actual ending_offset value */ AND qs.plan_handle = 0x06000100A27E7C1FA821B10600; /* replace 0x06000100A27E7C1FA821B10600 with actual plan_handle value */Com base na descrição do código do motivo, modifique a instrução, o lote ou o procedimento para evitar recompilações. Por exemplo, um procedimento armazenado pode conter uma ou mais
SETinstruções. Essas instruções devem ser removidas do procedimento.Para obter mais exemplos de causas e resoluções de recompilação, consulte Compilação em Lote, Recompilação e Problemas de Cache de Planos no SQL Server 2005. Para obter mais informações sobre recompilações, consulte Recompilar planos de execução.
Se o problema persistir, contate os Serviços de Atendimento ao Cliente da Microsoft.