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 passe hors connexion, cela signifie qu’une défaillance grave s’est produite, empêchant les transactions de se produire dans la base de données. Un tel échec 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 entraîné l’échec du journal et vous devez examiner le problème sous-jacent. Voici un exemple de la façon dont l’erreur s’affiche 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 les 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 la récupération, ou elle peut redémarrer elle-même (l’ensemble du service). Si un redémarrage automatique de la base de données échoue ou ne s’est pas produit, 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 de l’indisponibilité du journal des transactions. Il s’agit d’un exemple de message d’erreur 3422 qui montre un redémarrage de la 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 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 qui n’est pas disponible
  • Fichier journal des transactions physiquement endommagé qui entraîne l’impossibilité d’écrire ou de lire dans le fichier journal
  • Impossibilité d’accéder au fichier en raison d’un échec de chiffrement/déchiffrement via le chiffrement transparent des données (TDE)
    • Le service Key Vault n’est pas accessible
    • Le module du fournisseur EKM rencontre une exception, une erreur ou un autre problème qui empêche une opération réussie
  • Journal des transactions complet en raison de transactions volumineuses, d’un espace disque insuffisant ou de limites de taille de fichier imposées au journal des transactions. L’erreur 9002 se trouve dans le journal des erreurs SQL Server avant 9001. Pour plus d’informations, consultez MSSQLSERVER_9002

Action requise

Résolvez les erreurs qui précèdent 9001 en premier. Essayez ensuite de redémarrer l’instance SQL Server pour récupérer la base de données, si cela ne s’est pas déjà produit.

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

Vous pouvez observer l’erreur 9002 antérieure à 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 d’un journal des transactions complet (SQL Server erreur 9002)

  • Veillez à libérer de l’espace dans le 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évelopper le fichier journal existant ou en ajouter un nouveau si nécessaire dans certains cas

Résoudre les problèmes matériels et de système d’exploitation et restaurer à 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 de périphérique 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 où le système d’exploitation a renvoyé l’erreur « L’appareil n’est pas prêt ». Vous pouvez voir d’autres erreurs résultant de l’endommagement des disques en cas d’indisponibilité. Ces exemples fournissent un contexte qui vous permet 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 où le système d’exploitation signale des erreurs d’appareil entraînant l’inaccessible du journal des transactions pour plusieurs bases de données :

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 du système Windows signale les erreurs de périphérique 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 l’ensemble du chemin d’E/S de l’ordinateur au stockage est stable et fiable, et qu’il n’entraîne pas de dommages physiques aux fichiers.
  • Collaborez avec le fabricant de votre matériel et de votre appareil pour vous assurer que le matériel et sa configuration sont adaptés aux exigences d’E/S d’un système de base de données. Assurez-vous que les pilotes de périphérique, les microprogrammes, le BIOS et les 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 que, 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 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 de chiffrement ou de description TDE

Si vous utilisez un service ou un fournisseur externe EKM (EKM)/Modules de sécurité matérielle (HSM), assurez-vous que les modules fournis par le service sont stables et mis à jour. Collaborez avec le fournisseur EKM/HSM pour résoudre tous 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.