MSSQLSERVER_9001

Gäller för:SQL Server

Detaljer

Attribute Value
Produktnamn SQL Server
Händelse-ID 9001
Händelsekälla MSSQLSERVER
Komponent SQLEngine
Symboliskt namn LOG_NOT_AVAIL
Meddelandetext Loggen för databasen "%.*ls" är inte tillgänglig. Kontrollera händelseloggen efter relaterade felmeddelanden. Lös eventuella fel och starta om databasen.

Explanation

Fel 9001 uppstår när databasloggfilen blir otillgänglig. När databasloggen kopplas från innebär det att ett allvarligt fel har inträffat som förhindrar att transaktioner inträffar i databasen. Ett sådant fel kräver att databasen startas om eller att du återställer en säkerhetskopia. Felet visar slutresultatet, men förklarar inte vad som ledde till det här tillståndet. Ett annat problem har gjort att loggen inte är tillgänglig och du måste undersöka det underliggande problemet. Här är ett exempel på hur felet visas i SQL-felloggen

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.

Vanliga fel 9001 uppstår tillsammans med andra fel som ger en mer specifik förklaring av rotorsaken. Exempel är felen 9002, 3313, 3314, 17204 (visar OS-fel vid åtkomst till en fil), 17053 (visar OS-fel), 823.

I vissa situationer SQL Server försöker starta om databasen vid körning och utföra återställning, eller så kan den starta om sig själv (hela tjänsten). Om en automatisk omstart av databasen misslyckas eller inte inträffade kan du försöka starta om SQL Server och se om databasen har återställts. Annars måste du åtgärda den underliggande orsaken till att transaktionsloggen inte är tillgänglig. Det här är ett exempel på felmeddelandet 3422 som visar en omstart av databasen:

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.

Följande meddelande anger att en SQL Server omstart är på väg att ske:

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.

Orsak

Transaktionsloggen för databasen kan bli otillgänglig av många orsaker. Några exempel är

  • Transaktionsloggfilen finns på en lagringsenhet som misslyckades eller inte är tillgänglig
  • En fysiskt skadad transaktionsloggfil som leder till att det inte går att skriva till eller läsa från loggfilen
  • Det går inte att komma åt filen på grund av en misslyckad kryptering/dekryptering via Transparent Data Encryption (TDE)
    • Key Vault-tjänsten är inte tillgänglig
    • EKM-providermodulen stöter på ett undantag, fel eller annat problem som förhindrar lyckad åtgärd
  • En fullständig transaktionslogg på grund av stora transaktioner, lågt diskutrymme eller filstorleksgränser som har införts i transaktionsloggen. Fel 9002 kan hittas i SQL Server fellogg före 9001. Mer information finns i MSSQLSERVER_9002

Användaråtgärd

Lös de fel som föregår 9001 först. Försök sedan att starta om SQL Server-instansen för att återställa databasen, om det inte redan har inträffat.

Lösa fullständiga transaktionsloggfel

Du kan se fel 9002 före fel 9001. Här är ett exempel:

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.

I sådana fall fokuserar du på att lösa rotorsaken – en fullständig transaktionslogg

Information om hur du löser en fullständig transaktionslogg finns i Felsöka en fullständig transaktionslogg (SQL Server fel 9002)

  • Se till att du frigör transaktionsloggutrymme och ta reda på varför det inte har frigjorts
  • Frigör diskutrymme där transaktionsloggen finns
  • Expandera en befintlig loggfil eller lägg till en ny om det behövs i vissa fall

Lösa problem med maskinvara och operativsystem och återställa från en säkerhetskopia om det behövs

Vanliga fel 9001 uppstår när en transaktionsloggfil skadas eller på grund av problem med lagringsenheter som gör loggfilen otillgänglig. Här är två exempel på fel som du kan observera:

Ett exempel där lagringsvolymen blev otillgänglig och operativsystemet returnerade felet "Enheten är inte klar". Du kan se andra fel som beror på att diskarna har skadats när de inte är tillgängliga. De här exemplen ger kontext så att du kan förstå att fel 9001 bara är ett av de många symptomen på ett större problem.

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.

Här är ett annat exempel där operativsystemet rapporterar enhetsfel som leder till transaktionslogg för att flera databaser ska vara otillgängliga:

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.

Samtidigt rapporterar händelseloggen Windows System lagringsenhetsfel:

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.

Så här åtgärdar du sådana problem:

  • Kontrollera att lagringsvolymerna där databasen och loggfilerna finns är online, att hela I/O-sökvägen från dator till lagring är stabil och tillförlitlig och att den inte leder till fysiska filskador.
  • Arbeta med maskinvaru- och enhetstillverkaren för att säkerställa att maskinvaran och dess konfiguration är lämplig för I/O-kraven i ett databassystem. Se till att enhetsdrivrutiner, inbyggd programvara, BIOS och andra stödjande programvarukomponenter i I/O-sökvägen är uppdaterade.
  • Kör DBCC CHECKDB för att kontrollera databasens konsekvens om den kan tas online efter en omstart
  • Om databasen och loggfilerna inte är intakta och databasen därför inte kan komma online återställer du den senast kända säkerhetskopian av databasen
  • Felsökningsförslag finns i MSSQLSERVER-fel 823 och Felsöka databaskonsekvensfel som rapporterats av DBCC CHECKDB

Lösa TDE-krypterings- eller dekrypteringsfel

Om du använder en extern tjänst eller leverantör av utökningsbar nyckelhantering (EKM)/maskinvarusäkerhetsmoduler (HSM) kontrollerar du att modulerna som tillhandahålls av tjänsten är stabila och uppdaterade. Arbeta med EKM/HSM-providerleverantören för att lösa eventuella problem med de moduler som utför kryptering/dekryptering av filer.

Du kan se följande symptom i SQL-felloggen när det här problemet uppstår:

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