Partager via


MSSQLSERVER_9001

S’applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 9001
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique LOG_NOT_AVAIL
Texte du message Le journal de la base de données '%.*ls' n'est pas disponible. Consultez le journal des événements pour voir s'il contient des messages d'erreur liés à ce problème. Résolvez toutes les erreurs et redémarrez la base de données.

Explication

L’erreur 9001 se produit lorsque le fichier journal de base de données devient indisponible. Lorsque le journal de base de données est hors connexion, cela signifie qu’un échec grave s’est produit, ce qui empêche les transactions de se produire dans la base de données. Une telle défaillance nécessite le redémarrage de la base de données ou la restauration d’une sauvegarde. L’erreur affiche le résultat final, mais n’explique pas ce qui a conduit à cet état. Un autre problème a provoqué que le journal ne soit pas disponible et que vous devez examiner le problème sous-jacent. Voici un exemple de la façon dont l’erreur apparaît dans le journal des erreurs 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.

L’erreur 9001 se produit généralement avec d’autres erreurs qui fournissent une explication plus spécifique sur la cause racine. Les exemples incluent des erreurs 9002, 3313, 3314, 17204 (affiche l’erreur du système d’exploitation lors de l’accès à un fichier), 17053 (affiche l’erreur du système d’exploitation), 823.

Dans certaines situations, SQL Server tente de redémarrer la base de données au moment de l’exécution et d’effectuer une récupération, ou il peut redémarrer lui-même (l’ensemble du service). Si un redémarrage automatique de la base de données échoue ou n’a pas eu lieu, vous pouvez tenter de redémarrer SQL Server et voir si une récupération de la base de données a réussi à mettre la base de données en ligne. Si ce n’est pas le cas, vous devez résoudre la cause sous-jacente du journal des transactions indisponible. Voici un exemple de message d’erreur 3422 qui montre un redémarrage de base de données :

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.

Le message suivant indique qu’un redémarrage de SQL Server est sur le point de se produire :

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.

Cause

Le journal des transactions de la base de données peut devenir indisponible pour de nombreuses raisons. Voici quelques exemples :

  • Le fichier journal des transactions réside sur un appareil de stockage qui a échoué ou n’est pas disponible
  • Un fichier journal des transactions physiquement endommagé qui conduit à l’incapacité d’écrire ou de lire à partir du fichier journal
  • Impossibilité d’accéder au fichier en raison d’un échec du chiffrement/déchiffrement via Transparent Data Encryption (TDE)
    • Le service Key Vault n’est pas accessible
    • Le module fournisseur EKM s’exécute dans une exception, une erreur ou un autre problème qui empêche l’opération réussie
  • Un journal des transactions complet en raison de transactions volumineuses, d’espace disque faible ou de limites de taille de fichier imposées au journal des transactions. L’erreur 9002 peut être trouvée dans le journal des erreurs SQL Server avant 9001. Pour plus d’informations, consultez MSSQLSERVER_9002

Action utilisateur

Résolvez d’abord les erreurs qui précèdent la version 9001. Ensuite, essayez de redémarrer l’instance SQL Server pour récupérer la base de données, si ce n’est déjà fait.

Résoudre les erreurs complètes du journal des transactions

Vous pouvez observer l’erreur 9002 avant l’erreur 9001. Voici un exemple :

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.

Dans ce cas, concentrez-vous sur la résolution de la cause racine - un journal des transactions complet

Pour résoudre le journal des transactions complet, consultez Résoudre les problèmes liés à un journal des transactions complet (erreur SQL Server 9002)

  • Assurez-vous que vous libérez de l’espace de journal des transactions et découvrez pourquoi il n’a pas été libéré
  • Libérer de l’espace disque où réside le journal des transactions
  • Développez le fichier journal existant ou ajoutez-en un nouveau si nécessaire dans certains cas

Résoudre les problèmes matériels et de système d’exploitation et la restauration à partir d’une sauvegarde si nécessaire

L’erreur 9001 se produit généralement lorsqu’un fichier journal des transactions est endommagé ou en raison de problèmes d’appareil de stockage qui rendent le fichier journal indisponible. Voici deux exemples d’erreurs que vous pouvez observer :

Exemple où le volume de stockage est devenu indisponible et que le système d’exploitation a retourné l’erreur « L’appareil n’est pas prêt ». Vous pouvez voir d’autres erreurs résultant des disques endommagés lors de l’indisponibilité. Ces exemples fournissent un contexte pour vous permettre de comprendre que l’erreur 9001 n’est qu’un des nombreux symptômes d’un problème plus important.

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.

Voici un autre exemple dans lequel le système d’exploitation signale des erreurs d’appareil menant au journal des transactions pour que plusieurs bases de données soient inaccessibles :

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.

En même temps, le journal des événements système Windows signale des erreurs d’appareil de stockage :

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.

Pour résoudre ces problèmes :

  • Assurez-vous que les volumes de stockage où résident la base de données et les fichiers journaux sont en ligne, que le chemin d’E/S entier de l’ordinateur vers le stockage est stable et fiable et qu’il n’entraîne pas de dommages physiques aux fichiers.
  • Collaborez avec votre fabricant de matériel et d’appareil pour vous assurer que le matériel et sa configuration conviennent aux exigences d’E/S d’un système de base de données. Vérifiez que les pilotes de périphérique, le microprogramme, le BIOS et d’autres composants logiciels de prise en charge dans le chemin d’E/S sont à jour.
  • Exécutez DBCC CHECKDB pour vérifier la cohérence de la base de données, si elle peut être mise en ligne après un redémarrage
  • Si la base de données et les fichiers journaux ne sont pas intacts et, par conséquent, la base de données ne peut pas être mise en ligne, restaurez la dernière sauvegarde correcte connue de la base de données.
  • Pour obtenir des suggestions de résolution des problèmes, consultez l’erreur MSSQLSERVER 823 et résoudre les erreurs de cohérence de base de données signalées par DBCC CHECKDB

Résoudre l’échec du chiffrement ou de la description TDE

Si vous utilisez un fournisseur ou un service ou un fournisseur EKM (Extensible Key Management) externe, vérifiez que les modules fournis par le service sont stables et mis à jour. Collaborez avec le fournisseur EKM/HSM pour résoudre les problèmes liés aux modules qui effectuent le chiffrement/déchiffrement des fichiers.

Vous pouvez observer les symptômes suivants dans le journal des erreurs SQL lorsque ce problème se produit :

**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.