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 mehr verfügbar ist. Wenn das Datenbankprotokoll offline geschaltet wird, bedeutet dies, dass ein schwerwiegender Fehler aufgetreten ist, der verhindert, dass Transaktionen in der Datenbank ausgeführt werden. Für einen solchen Fehler muss die Datenbank neu gestartet werden, oder Sie müssen eine Sicherung wiederherstellen. 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 war, 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.

Fehler 9001 tritt häufig zusammen mit anderen Fehlern auf, die eine genauere Erklärung zur Grundursache bieten. Beispiele hierfür sind die Fehler 9002, 3313, 3314, 17204 (zeigt den Betriebssystemfehler beim Zugriff auf eine Datei), 17053 (zeigt Betriebssystemfehler), 823 an.

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, können Sie versuchen, SQL Server neu zu starten und zu prüfen, ob die Datenbank bei einer Wiederherstellung erfolgreich online geschaltet wird. Andernfalls müssen Sie die zugrunde liegende Ursache für die Nichtverfügbarkeit des Transaktionsprotokolls beheben. Dies ist ein Beispiel für die Fehlermeldung 3422, die einen Datenbankneustart 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 neustarten 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 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 es nicht möglich ist, in die Protokolldatei zu schreiben oder daraus zu lesen.
  • Unfähigkeit des Zugriffs auf die Datei aufgrund einer fehlgeschlagenen Ver-/Entschlüsselung über Transparent Data Encryption (TDE)
    • Zugriff auf den Schlüsseltresordienst ist nicht möglich
    • Beim EKM-Anbietermodul tritt eine Ausnahme, ein Fehler oder ein anderes Problem auf, das den erfolgreichen Betrieb verhindert.
  • Ein vollständiges Transaktionsprotokoll aufgrund großer Transaktionen, geringer Speicherplatz oder Dateigrößenbeschränkungen für das Transaktionsprotokoll. Fehler 9002 kann im SQL Server Fehlerprotokoll vor 9001 gefunden werden. Weitere Informationen finden Sie unter MSSQLSERVER_9002

Benutzeraktion

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

Beheben von Fehlern im vollständigen Transaktionsprotokoll

Möglicherweise tritt vor Fehler 9001 fehler 9002 auf. 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.

Konzentrieren Sie sich in solchen Fällen auf die Behebung der Grundursache – 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 Speicherplatz im Transaktionsprotokoll freigeben und herausfinden, warum er nicht freigegeben wurde.
  • Freigeben von Speicherplatz, in dem sich das Transaktionsprotokoll befindet
  • Erweitern Sie in einigen Fällen vorhandene Protokolldatei, oder fügen Sie bei Bedarf eine neue Protokolldatei hinzu.

Beheben von Hardware- und Betriebssystemproblemen und Wiederherstellung aus einer Sicherung bei Bedarf

Fehler 9001 tritt häufig auf, wenn eine Transaktionsprotokolldatei beschädigt ist oder aufgrund von Speichergerätenproblemen, die dazu führen, dass die Protokolldatei nicht mehr verfügbar ist. Im Folgenden finden Sie zwei Beispiele für Fehler, die Sie möglicherweise beobachten können:

Ein Beispiel, bei dem das Speichervolume nicht verfügbar wurde und das Betriebssystem den Fehler "Das Gerät ist nicht bereit" zurückgegeben hat. Sie können andere Fehler sehen, die darauf resultieren, dass die Datenträger beschädigt wurden, wenn sie nicht verfügbar sind. Diese Beispiele bieten Kontext, 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.

Hier sehen Sie ein weiteres Beispiel, in dem das Betriebssystem Gerätefehler meldet, die zum Transaktionsprotokoll führen, auf das nicht auf mehrere Datenbanken 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-Systemereignisprotokoll 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, in denen sich die Datenbank- und Protokolldateien befinden, online sind, dass der gesamte E/A-Pfad vom Computer zum Speicher stabil und zuverlässig ist und dass er nicht zu physischen Dateischäden führt.
  • Arbeiten Sie mit Ihrem Hardware- und Gerätehersteller zusammen, um sicherzustellen, dass die Hardware und ihre Konfiguration den E/A-Anforderungen eines Datenbanksystems entspricht. 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 geschaltet werden kann.
  • Wenn die Datenbank und die Protokolldateien nicht intakt sind und die Datenbank daher nicht online geschaltet werden kann, stellen Sie die letzte bekannte gute Sicherung der Datenbank wieder her.
  • Vorschläge zur Problembehandlung finden Sie unter MSSQLSERVER-Fehler 823 und Behandeln von Datenbankkonsistenzfehlern, die von DBCC CHECKDB gemeldet wurden.

Beheben von TDE-Verschlüsselungs- oder Beschreibungsfehlern

Wenn Sie einen externen EKM-/HSM-Dienst (Extensible Key Management)/hardware security modules (HSM) verwenden, stellen Sie sicher, dass die vom Dienst bereitgestellten Module stabil und aktualisiert sind. Arbeiten Sie mit dem EKM/HSM-Anbieter zusammen, um alle Probleme mit den Modulen zu beheben, die die Ver-/Entschlüsselung von Dateien durchfü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.