Freigeben über


MSSQLSERVER_9001

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 9001
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name LOG_NOT_AVAIL
Meldungstext Das Protokoll für die '%.*ls'-Datenbank ist nicht verfügbar. Überprüfen Sie das Ereignisprotokoll auf verwandte Fehlermeldungen. Beheben Sie ggf. alle Fehler, und starten Sie die Datenbank neu.

Erklärung

Fehler 9001 tritt auf, wenn die Datenbankprotokolldatei nicht verfügbar ist. Wenn das Datenbankprotokoll offline ist, bedeutet dies, dass ein schwerwiegender Fehler aufgetreten ist, der verhindert, dass Transaktionen in der Datenbank auftreten. Ein solcher Fehler erfordert, dass die Datenbank neu gestartet wird oder sie eine Sicherung wiederherstellen kann. Der Fehler zeigt das Endergebnis an, erklärt aber nicht, was zu diesem Zustand geführt hat. Ein anderes Problem hat dazu geführt, dass das Protokoll nicht verfügbar ist, und Sie müssen das zugrunde liegende Problem untersuchen. Hier ist ein Beispiel dafür, wie der Fehler im SQL-Fehlerprotokoll angezeigt wird.

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.

Häufig tritt Fehler 9001 zusammen mit anderen Fehlern auf, die spezifischere Erläuterungen zur Ursache liefern. Beispiele hierfür sind Fehler 9002, 3313, 3314, 17204 (zeigt betriebssystemfehler beim Zugriff auf eine Datei), 17053 (os error), 823.

In bestimmten Situationen versucht SQL Server, die Datenbank zur Laufzeit neu zu starten und eine Wiederherstellung durchzuführen, oder sie kann sich selbst neu starten (der gesamte Dienst). Wenn ein automatischer Datenbankneustart nicht erfolgreich war oder nicht aufgetreten ist, versuchen Sie möglicherweise, SQL Server neu zu starten und festzustellen, ob eine Wiederherstellung der Datenbank die Datenbank erfolgreich online bringt. Wenn nicht, müssen Sie die zugrunde liegende Ursache für das Transaktionsprotokoll nicht verfügbar sein. Dies ist ein Beispiel für fehlermeldung 3422, das einen Neustart der Datenbank zeigt:

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.

Die folgende Meldung gibt an, dass ein SQL Server-Neustart ausgeführt wird:

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.

Ursache

Das Transaktionsprotokoll der Datenbank kann aus vielen Gründen nicht mehr verfügbar sein. Einige Beispiele sind:

  • Die Transaktionsprotokolldatei befindet sich auf einem Speichergerät, das fehlgeschlagen ist oder nicht verfügbar ist.
  • Eine physisch beschädigte Transaktionsprotokolldatei, die dazu führt, dass sie nicht in die Protokolldatei schreiben oder lesen können.
  • Unzustellbarkeit des Zugriffs auf die Datei aufgrund einer fehlgeschlagenen Verschlüsselung/Entschlüsselung über transparente Datenverschlüsselung (TDE)
    • Auf den Schlüsseltresordienst kann nicht zugegriffen werden.
    • Das EKM-Anbietermodul tritt in einer Ausnahme, einem Fehler oder einem anderen Problem auf, das einen erfolgreichen Vorgang verhindert.
  • Ein vollständiges Transaktionsprotokoll aufgrund großer Transaktionen, geringer Speicherplatz oder Dateigrößenbeschränkungen, die für das Transaktionsprotokoll gelten. Der Fehler 9002 kann im SQL Server-Fehlerprotokoll vor dem Fehler 9001 gefunden werden. Weitere Informationen finden Sie unter MSSQLSERVER_9002

Aktion des Benutzers

Beheben Sie die Fehler, die vor 9001 beginnen. Versuchen Sie dann, die SQL Server-Instanz neu zu starten, um die Datenbank wiederherzustellen, falls dies noch nicht geschehen ist.

Beheben vollständiger Transaktionsprotokollfehler

Möglicherweise beobachten Sie fehler 9002 vor Fehler 9001. Hier sehen Sie ein Beispiel:

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.

In solchen Fällen konzentrieren Sie sich auf die Auflösung der Ursache - ein vollständiges Transaktionsprotokoll

Informationen zum Auflösen des vollständigen Transaktionsprotokolls finden Sie unter Problembehandlung für ein vollständiges Transaktionsprotokoll (SQL Server-Fehler 9002)

  • Stellen Sie sicher, dass Sie Transaktionsprotokollspeicher freigeben und herausfinden, warum es nicht freigegeben wurde
  • Freigeben von Speicherplatz, auf dem sich das Transaktionsprotokoll befindet
  • Erweitern einer vorhandenen Protokolldatei oder Hinzufügen einer neuen Protokolldatei bei Bedarf in einigen Fällen

Beheben von Hardware- und Betriebssystemproblemen und Wiederherstellen einer Sicherung bei Bedarf

Häufig tritt fehler 9001 auf, wenn eine Transaktionsprotokolldatei beschädigt ist oder aufgrund von Problemen mit Speichergeräten, die die Protokolldatei nicht verfügbar machen. Hier sind zwei Beispiele für Fehler, die Sie beobachten können:

Ein Beispiel, bei dem das Speichervolume nicht verfügbar wurde, und der Betriebssystemfehler "Das Gerät ist nicht bereit". Sie können andere Fehler sehen, die auf nicht verfügbaren Datenträgern beschädigt wurden. Diese Beispiele stellen Kontext bereit, damit Sie verstehen können, dass Fehler 9001 nur eines der vielen Symptome eines größeren Problems ist.

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.

Nachfolgend finden Sie ein weiteres Beispiel, bei dem gerätefehler gemeldet werden, die zu Transaktionsprotokollen für mehrere Datenbanken führen, auf die nicht zugegriffen werden kann:

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.

Gleichzeitig meldet das Windows System-Ereignisprotokoll Speichergerätefehler:

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.

So beheben Sie solche Probleme:

  • Stellen Sie sicher, dass die Speichervolumes, auf denen sich die Datenbank- und Protokolldateien befinden, online sind, dass der gesamte E/A-Pfad von Computer zu Speicher stabil und zuverlässig ist und dass sie nicht zu physischen Dateischäden führt.
  • Arbeiten Sie mit Ihrem Hardware- und Gerätehersteller zusammen, um sicherzustellen, dass Hardware und konfiguration für die E/A-Anforderungen eines Datenbanksystems geeignet sind. Stellen Sie sicher, dass Gerätetreiber, Firmware, BIOS und andere unterstützende Softwarekomponenten im E/A-Pfad auf dem neuesten Stand sind.
  • Führen Sie DBCC CHECKDB aus, um die Konsistenz der Datenbank zu überprüfen, wenn sie nach einem Neustart online gestellt werden kann.
  • Wenn die Datenbank- und Protokolldateien nicht intakt sind und die Datenbank daher nicht online sein kann, stellen Sie die letzte bekannte gute Sicherung der Datenbank wieder her.
  • Problembehandlungsvorschläge finden Sie unter MSSQLSERVER-Fehler 823 und Beheben von Datenbankkonsistenzfehlern, die von DBCC CHECKDB gemeldet wurden

Beheben eines TDE-Verschlüsselungs- oder Beschreibungsfehlers

Wenn Sie einen externen EKM(Extensible Key Management)/Hardware Security Modules (HSM)-Dienst oder -Anbieter verwenden, stellen Sie sicher, dass die vom Dienst bereitgestellten Module stabil und aktualisiert werden. Arbeiten Sie mit dem Anbieter EKM/HSM zusammen, um Probleme mit den Modulen zu beheben, die die Verschlüsselung/Entschlüsselung von Dateien ausführen.

Sie können die folgenden Symptome im SQL-Fehlerprotokoll beobachten, wenn dieses Problem auftritt:

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