MSSQLSERVER_9004
Aplica-se a: SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
ID do evento | 9004 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | LOG_CORRUPT |
Texto da mensagem | Erro ao processar o log do banco de dados '%.*ls'. Se possível, restaure do backup. Se não houver um backup disponível, talvez seja necessário recriar o log. |
Explicação
Ocorreu um erro ao processar o log durante a reversão, a recuperação ou a replicação. Isso pode indicar um erro detectado pelo sistema operacional ou um erro de consistência interna detectado pelo SQL Server.
O Mecanismo de Banco de Dados do SQL Server executa verificações lógicas sobre a consistência do conteúdo do log de transações à medida que o lê e processa. Nem todos os aspectos do cabeçalho, blocos e registros do log são verificados. O número do Estado fornece mais informações sobre o tipo de falha:
- Estado 1 o cabeçalho do arquivo de log do VLF (arquivo de log virtual) foi danificado. Caso um cabeçalho do arquivo de log danificado seja encontrado ao iniciar o banco de dados na inicialização do serviço, talvez você veja apenas o erro 9004 no LOG DE ERROS. O cabeçalho do arquivo de log é a primeira parte de cada VLF dentro de um log de transações. O cabeçalho do arquivo de log não é o mesmo que o cabeçalho de arquivo único ou os primeiros 8 KB do arquivo de log. Se o cabeçalho do arquivo do arquivo de log estiver danificado, você poderá receber a mensagem 5172, como quando ocorre corrupção do cabeçalho da página de um arquivo do banco de dados.
- Estado 2 e 3 Um bloco de log era inválido ao executar a recuperação durante uma operação RESTORE.
- Estado 4 a 12 São diversas verificações em blocos de log ao processar registros de log. Isso inclui a paridade, o setor e outras verificações lógicas sobre a consistência do log de transações
Na maioria dos casos, esse erro é visto apenas no LOG DE ERROS ou no Log de eventos de aplicativos do Windows com EventID = 9004 porque a operação que processa o log não é baseada em um comando de usuário direto (como a execução da recuperação quando o mecanismo do SQL Server é iniciado). Nessas situações, muitas vezes, o erro 9004 é visto junto com o erro 3414. Porém, algumas consultas, como ALTER DATABASE, podem exigir um processamento do log e, portanto, exibirão esses erros. Como o erro tem severidade = 21, a sessão de usuário está desconectada.
Causa
O erro 9004 é um erro geral indicando que o conteúdo do log de transações está danificado. O motivo para o log se tornar inconsistente é semelhante a qualquer problema de corrupção de banco de dados detectado pelo mecanismo do SQL Server. Para encontrar a causa dos danos do log, você deve seguir técnicas semelhantes usadas para banco de dados corrompidos, incluindo uma análise de possíveis problemas de hardware, sistema de arquivos e E/S. Observe que DBCC CHECKDB não verifica o log de transações como parte de suas operações e não pode detectar erros de corrupção de log. O erro 9004 é gerado pelo próprio mecanismo do SQL Server.
Ação do usuário
Uma das ações seguintes poderá corrigir esse erro:
Restaurar de um backup: Restaure de um backup em boas condições para se recuperar desse problema. É possível que, caso a parte de log de um banco de dados ou o backup de log tenha conteúdo danificado, você encontre o erro 9004 em RESTORE. Nessa situação, o log de transações no backup está danificado.
Recompilar o log: Se você não puder restaurar de um backup, poderá colocar o banco de dados online recriando o log de transações. Você deve reconhecer com atenção as ramificações da recompilação do log de transações. Isso inclui a possível perda de consistência transacional em seu de banco de dados. Para saber mais sobre como recompilar o log de transações, confira Resolver erros no modo de emergência do banco de dados.
Examine os logs em busca de problemas no sistema: Além disso, verifique o log de eventos do sistema e os logs de erros para identificar problemas no sistema que podem ter causado o problema.