MSSQLSERVER_2814
Detalhes
Nome do produto |
SQL Server |
Versão do produto |
10.0 |
Número da compilação do produto |
|
ID de evento |
2814 |
Origem do evento |
MSSQLSERVER |
Componente |
SQLEngine |
Nome simbólico |
PR_POSSIBLE_INFINITE_RECOMPILE |
Texto da mensagem |
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. |
Explicação
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.
Código do motivo |
Descrição |
---|---|
1 |
Esquema alterado |
2 |
Estatísticas alteradas |
3 |
Compilação adiada |
4 |
Opção set alterada |
5 |
Tabela temp alterada |
6 |
Conjunto de linhas remoto alterado |
7 |
Permissões For Browse alteradas |
8 |
Ambiente de notificação de consulta alterado |
9 |
Exibição de partição alterada |
10 |
Opções de cursor alteradas |
11 |
Opção (recompilar) solicitada |
Ação do usuário
Para exibir a instrução que causa a recompilação, execute a consulta a seguir. Substitua os espaços reservados sql_handle, starting_offset, ending_offset e plan_handle pelos valores especificados na mensagem de erro. Observe que as colunas database_name e object_name serão NULL para 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 (sql_handle) AS st
WHERE qs.statement_start_offset = starting_offset
AND qs.statement_end_offset = ending_offset
AND qs.plan_handle = plan_handle;
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 instruções SET. Essas instruções devem ser removidas do procedimento. Para obter mais exemplos dos motivos da e das resoluções da recompilação, consulte Problemas de compilação em lote, recompilação e cache de planos no SQL Server 2005.
Se o problema persistir, contate os Serviços de Atendimento ao Cliente da Microsoft.