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
Details
| Attribute | Value |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 9004 |
| Origem do evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbólico | LOG_CORRUPT |
| Texto da mensagem | Ocorreu um erro ao processar o log do banco de dados '%.*ls'. Se possível, restaure a partir do backup. Se um backup não estiver disponível, pode ser necessário reconstruir o log. |
Explanation
Foi encontrado um erro durante o processamento do registo durante o rollback, recuperação ou replicação. Isto pode indicar um erro detetado pelo sistema operativo ou um erro interno de consistência detetado pelo SQL Server.
O Mecanismo de Banco de Dados do SQL Server realiza verificações lógicas sobre a consistência do conteúdo do registo de transações enquanto o lê e processa. Nem todos os aspetos do cabeçalho de log, blocos de log e registos de log são verificados. O número do Estado fornece mais informações sobre o tipo de falha:
- Estado 1 O cabeçalho do ficheiro de registo do Virtual Log File (VLF) foi danificado. Se for encontrado um cabeçalho de ficheiro de registo danificado durante o arranque da base de dados no arranque do serviço, pode ver apenas o Erro 9004 no registo de ERROS. O Cabeçalho do Ficheiro de Registo é a primeira parte de cada VLF dentro de um registo de transações. O cabeçalho do ficheiro de registo não é o mesmo que o cabeçalho do ficheiro único, ou os primeiros 8 KB, do ficheiro de registo. Se o cabeçalho do ficheiro de registo estiver danificado, pode aparecer o Msg 5172, semelhante à corrupção de uma página de cabeçalho de ficheiro de base de dados.
- Estado 2 e 3 Um bloco de log era inválido ao realizar a recuperação durante uma RESTORE operação.
- Estado 4 a 12 Estas são todas várias verificações em blocos de registo ao processar registos de registo. Estas incluem verificações de paridade, setor e outras verificações lógicas sobre a consistência do registo de transações
Na maioria dos casos, este erro só é observado no ERRORLOG ou no Windows Application Event Log com EventID = 9004 porque a operação que processa o log não se baseia num comando direto do utilizador (como a recuperação a correr quando o SQL Server Engine inicia). Nestas situações, o erro 9004 é frequentemente visto em conjunto com o erro 3414. No entanto, algumas consultas como ALTER DATABASE podem exigir o processamento do log e, por isso, verão esses erros. Como o erro está em Gravidade=21, a sessão do utilizador é desligada.
Motivo
O Erro 9004 é um erro geral que indica que o conteúdo do registo de transações está danificado. As razões para o registo se tornar inconsistente são semelhantes a qualquer problema de corrupção de base de dados detetado pelo SQL Server Engine. Para encontrar a causa dos danos no log, deve seguir técnicas semelhantes usadas para corrupção de bases de dados, incluindo uma análise de possíveis problemas de hardware, sistema de ficheiros e I/O. Note que o DBCC CHECKDB não verifica o registo de transações como parte das suas operações e não consegue detetar erros de corrupção do registo. O erro 9004 é gerado pelo próprio SQL Server Engine.
Ação do Usuário
Uma das seguintes ações irá corrigir este erro:
Restaurar a partir de uma cópia de segurança: Restaurar a partir de uma cópia de segurança conhecida para recuperar deste problema. É possível que, se a parte do log de uma base de dados ou backup de log contiver conteúdos danificados, encontre um Erro 9004 em RESTORE. Nesta situação, o registo de transações na cópia de segurança é danificado.
Reconstruir o registo: Se não conseguir restaurar a partir de uma cópia de segurança, pode conseguir colocar a base de dados online reconstruindo o registo de transações. Deve compreender cuidadosamente as implicações de reconstruir o registo de transações. Isto inclui a possível perda de consistência transacional na sua base de dados. Para mais informações sobre como reconstruir o registo de transações, consulte Resolução de Erros no Modo de Emergência da Base de Dados.
Examine os registos para problemas do sistema: Verifique também o registo de eventos do sistema e os registos de erros para identificar problemas dentro do sistema que possam ter causado o problema.