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
Detalhes
| Attribute | Valor |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 9001 |
| Origem do evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbólico | LOG_NOT_AVAIL |
| Texto da mensagem | O log do banco de dados '%.*ls' não está disponível. Verifique se há mensagens de erro relacionadas no log de eventos. Resolva quaisquer erros e reinicie a base de dados. |
Explicação
O erro 9001 ocorre quando o ficheiro de registo da base de dados se torna indisponível. Quando o registo da base de dados fica offline, isso significa que ocorreu uma falha grave que impede a realização de transações na base de dados. Tal falha exige que a base de dados reinicie ou que restaure uma cópia de segurança. O erro mostra o resultado final, mas não explica o que levou a este estado. Outro problema fez com que o registo não ficasse disponível e tens de investigar o problema subjacente. Aqui está um exemplo de como o erro aparece no registo de erros SQL
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.
Comumente, o erro 9001 ocorre juntamente com outros erros que fornecem explicações mais específicas sobre a causa raiz. Exemplos incluem os erros 9002, 3313, 3314, 17204 (mostra erro do sistema operativo ao aceder a um ficheiro), 17053 (mostra erro do sistema operativo), 823.
Em certas situações, o SQL Server tenta reiniciar a base de dados em tempo de execução e realizar a recuperação, ou pode reiniciar-se sozinho (todo o serviço). Se um reinício automático da base de dados não for bem-sucedido ou não ocorrer, pode tentar reiniciar o SQL Server e ver se a recuperação da base de dados consegue pô-la online com sucesso. Se não, deve abordar a causa subjacente da indisponibilidade do registo de transações. Este é um exemplo da mensagem de erro 3422 que mostra um reinício da base de dados:
Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
A mensagem seguinte indica que um reinício do SQL Server está prestes a ocorrer:
Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.
Motivo
O registo de transações da base de dados pode tornar-se indisponível por várias razões. Alguns exemplos incluem
- O ficheiro de registo de transações reside num dispositivo de armazenamento que falhou ou não está disponível
- Um ficheiro de registo de transações fisicamente danificado que leva à incapacidade de escrever ou ler a partir do ficheiro de registo
- Incapacidade de aceder ao ficheiro devido a uma falha na encriptação/desencriptação via Encriptação de Dados Transparente (TDE)
- O serviço de cofre de chaves não está acessível
- O módulo fornecedor EKM depara-se com uma exceção, erro ou outro problema que impede a operação bem-sucedida
- Um registo completo de transações devido a transações grandes, pouco espaço em disco ou limites de tamanho de ficheiro impostos ao registo de transações. O erro 9002 pode ser encontrado no registo de erros do SQL Server antes do 9001. Para mais informações, consulte MSSQLSERVER_9002
Ação do utilizador
Resolve primeiro os erros que precedem o 9001. Depois tenta reiniciar a instância do SQL Server para recuperar a base de dados, se isso ainda não aconteceu.
Resolver erros completos do registo de transações
Pode observar o erro 9002 antes do erro 9001. Eis um exemplo:
Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoDb' - Hardened Lsn: '(7672713:38265:1)' Commit LSN: '(7672712:1683087:46)' Commit Time: 'Jul 1 2021 5:51AM'
Database ContosoDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRDAT1ANLYSQL05' with Replica ID: {38a71ff9-f0ee-4737-9255-bb6a73e1c5d5}. This is an informational message only. No user action is required.
Error during rollback. shutting down database (location: 1).
Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.
Recovery of database 'ContosoDb' (6) is 0% complete (approximately 60466 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.
Nesses casos, foque-se em resolver a causa raiz – um registo completo de transações
Para resolver o registo completo de transações, consulte Solucionar um Registo de Transações Completo (SQL Server Erro 9002)
- Certifique-se de que liberta espaço nos registos de transações e descubra porque não foi libertado
- Liberte espaço em disco onde reside o registo de transações
- Expandir o ficheiro de registo existente ou adicionar um novo, se necessário, em alguns casos
Resolver problemas de hardware e sistema operativo e restaurar a partir de uma cópia de segurança, se necessário
Normalmente, o erro 9001 ocorre quando um ficheiro de registo de transações é danificado ou devido a problemas no dispositivo de armazenamento que tornam o ficheiro de registo indisponível. Aqui estão dois exemplos de erros que pode observar:
Um exemplo em que o volume de armazenamento ficou indisponível e o sistema operativo devolveu o erro "O dispositivo não está pronto". Pode ver outros erros que resultaram dos discos danificados em indisponíveis. Estes exemplos fornecem contexto para que compreenda que o erro 9001 é apenas um dos muitos sintomas de um problema maior.
Error: 823, Severity: 24, State: 2.
The operating system returned error 21(The device is not ready.) to SQL Server during a read at offset 0x000009afde6000 in file 'G:\Data\Files\ContosoDb_4.ldf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Error: 9001, Severity: 21, State: 3.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Starting up database 'ContosoDb'.
Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file G:\Data\Files\ContosoDb.mdf for file number 1. OS error: 3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "G:\Data\Files\ContosoDb.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
Error: 17207, Severity: 16, State: 1.
FileMgr::StartPrimaryDataFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file 'G:\Data\Files\ContosoDb_0.ndf'. Diagnose and correct the operating system error, and retry the operation.
Aqui está outro exemplo em que o sistema operativo reporta erros nos dispositivos, levando ao registo de transações de múltiplas bases de dados inacessíveis:
Error: 17053, Severity: 16, State: 1.
SQLServerLogMgr::LogWriter: Operating system error 1117(The request could not be performed because of an I/O device error.) encountered.
Error: 9001, Severity: 21, State: 4.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Always On Availability Groups data movement for database 'ContosoDb' has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.
Error: 9001, Severity: 21, State: 16.
The log for database 'tempdb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.
Ao mesmo tempo, o registo de eventos do Sistema Windows reporta erros nos dispositivos de armazenamento:
Warning NODEDB1 129 pvscsi Reset to device, \Device\RaidPort2, was issued.
Warning NODEDB1 153 Disk The IO operation at logical block address 0xxxxxxxx for Disk 4 (PDO name: \Device\0000007f) was retried.
Para resolver tais questões:
- Garanta que os volumes de armazenamento onde a base de dados e os ficheiros de registo residem estão online, que todo o percurso de E/S da máquina para o armazenamento é estável e fiável, e que não causa danos físicos nos ficheiros.
- Trabalhe com o fabricante do seu hardware e dispositivo para garantir que o hardware e a sua configuração são adequados aos requisitos de I/O de um sistema de base de dados. Certifique-se de que os drivers de dispositivos, firmware, BIOS e outros componentes de software de suporte no caminho de I/O estão atualizados.
- Execute o DBCC CHECKDB para verificar a consistência da base de dados, se pode ser ativada após um reinício
- Se a base de dados e os ficheiros de registo não estiverem intactos e, como resultado, a base de dados não conseguir entrar online, restaure o último backup bom conhecido da base de dados
- Para sugestões de resolução de problemas, consulte o erro MSSQLSERVER 823 e Troubleshoot database consistency errors reportados pelo DBCC CHECKDB
Resolver falhas de encriptação ou desencriptação TDE
Se estiver a usar um serviço ou fornecedor externo de Gestão de Chaves Extensíveis (EKM)/Módulos de Segurança de Hardware (HSM), certifique-se de que os módulos fornecidos pelo serviço são estáveis e atualizados. Trabalhe com o fornecedor do fornecedor EKM/HSM para resolver quaisquer problemas com os módulos que realizam a encriptação/desencriptação dos ficheiros.
Pode observar os seguintes sintomas no registo de erros SQL quando este problema ocorre:
**Dump thread - spid = 0, EC = 0x0000023FDA293320
***Stack Dump being sent to F:\Data\MSSQL13.INST1\MSSQL\LOG\SQLDump0007.txt
* *******************************************************************************
*
* BEGIN STACK DUMP:
* 11/22/22 12:04:58 spid 1
*
* Crypto Exception
*
00007FFBA0C81791 Module(ntdll+0000000000051791)
Stack Signature for the dump is 0x00000000D3AC1708
External dump process return code 0x20000001. External dump process returned no errors.
Error: 15466, Severity: 16, State: 28.
An error occurred during decryption.
Error: 9001, Severity: 21, State: 16.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.