Dela via


MSSQLSERVER_824

Gäller för:SQL Server

Detaljer

Attribute Värde
Produktnamn SQL Server
Händelse-ID 824
Händelsekälla MSSQLSERVER
Komponent SQLEngine
Symboliskt namn B_HARDSSERR
Meddelandetext SQL Server identifierade ett logiskt konsekvensbaserat I/O-fel: %ls. Det inträffade på sidan %S_PGID i %S_MSG av databas-ID %d vid förskjutning %#016I64x i filen '%ls'. Ytterligare meddelanden i SQL Server-felloggen eller operativsystemets fellogg kan ge mer information. Det här är ett allvarligt feltillstånd som hotar databasintegriteten och måste åtgärdas omedelbart. Slutför en fullständig kontroll av databaskonsekvens (DBCC CHECKDB). Det här felet kan orsakas av många faktorer. Mer information finns i https://go.microsoft.com/fwlink/?linkid=2252374.

Symptom

Du kan stöta på följande felmeddelande i SQL Server-felloggen eller händelseloggen för Windows-programmet om en logisk konsekvenskontroll misslyckas när du har läst eller skrivit en databassida:

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe 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 https://go.microsoft.com/fwlink/?linkid=2252374.

Om en SELECT- eller DML-fråga stöter på det här meddelandet returneras felmeddelandet till programmet och databasanslutningen avslutas.

Orsak

Det här felet anger att Windows rapporterar att sidan har lästs från disken, men SQL Server upptäckte något fel på sidan. Det här felet liknar fel 823, förutom att Windows inte identifierade felet. Fel 824 indikerar vanligtvis ett problem i I/O-undersystemet, till exempel diskenheter som inte fungerar, problem med inbyggd programvara, felaktiga enhetsdrivrutiner och så vidare. Mer information om I/O-fel finns i Grunderna för Microsoft SQL Server I/O, kapitel 2.

SQL Server använder följande Windows-API:er för att utföra I/O-åtgärderna: ReadFile, WriteFile, ReadFileScatteroch WriteFileGather. När du har slutfört dessa I/O-åtgärder söker SQL Server efter eventuella felvillkor som är associerade med dessa API-anrop. Om dessa API-anrop misslyckas med ett operativsystemfel rapporterar SQL Server fel 823. Det kan finnas situationer där Windows API-anropet faktiskt lyckas, men de data som överförs av I/O-åtgärden kan ha stött på ett logiskt konsekvensproblem. Dessa problem med logisk konsistens rapporteras via felet 824.

Felet 824 innehåller följande information:

  • Databasfilen som I/O-åtgärden utförs mot
  • Förskjutningen med filen där I/O-åtgärden gjordes
  • Databasen som den här filen tillhör
  • Sidnumret som var involverat i I/O-åtgärden
  • Var åtgärden en läs- eller skrivåtgärd
  • Information om den logiska konsekvenskontroll som misslyckades (typ av kontroll, faktiskt värde och förväntat värde som används för den här kontrollen)

Dessa logiska konsekvenskontroller är integritetskontroller som utförs av SQL Server för att säkerställa att viktiga element i de data som var inblandade i I/O-överföringen förblev intakta under I/O-åtgärden. Kontrollerna omfattar Checksum, Torn Page, Short transfer, Bad Page ID, Stale Read och Page Audit Failure. Vilka kontroller som utförs varierar beroende på olika konfigurationsalternativ på databas- och servernivå.

824-felmeddelandet anger vanligtvis att det finns ett problem med det underliggande lagringssystemet eller maskinvaran eller en drivrutin som är i sökvägen till I/O-begäran. Du kan stöta på det här felet när det finns inkonsekvenser i filsystemet eller om databasfilen är skadad.

Lösning

Om du får fel 824 kan du prova följande lösningar:

  • Granska den suspect_pages tabellen i msdb för att kontrollera om andra sidor (i samma databas eller olika databaser) stöter på det här problemet.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Kontrollera databaserna som finns i samma volym (som den som rapporterades i 824-meddelandet) för konsekvens med hjälp av kommandot DBCC CHECKDB. Om du hittar inkonsekvenser från DBCC CHECKDB kommandot använder du vägledningen i Knowledge Base-artikeln Så här felsöker du databaskonsekvensfel som rapporterats av DBCC CHECKDB.

    DBCC CHECKDB;
    
  • Om databasen som stöter på dessa 824-fel inte har databasalternativet PAGE_VERIFY CHECKSUM aktiverat aktiverar du alternativet omedelbart. 824-fel kan inträffa av andra orsaker än ett kontrollsummefel, men CHECKSUM är det bästa alternativet för att verifiera sidans konsistens när den har skrivits till disk. Använd det här skriptet för att identifiera databaser där ALTERNATIVET CHECKSUM inte är aktiverat:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Granska Windows-händelseloggarna för eventuella fel eller meddelanden som rapporterats från operativsystemet eller en lagringsenhet eller en enhetsdrivrutin. Om de är relaterade till det här felet på något sätt bör du åtgärda dessa fel först. Förutom meddelandet 824 kan du till exempel också märka en händelse som "Drivrutinen upptäckte ett kontrollantfel på \Device\Harddisk4\DR4" som rapporterades av diskkällan i händelseloggen. I så fall måste du utvärdera om den här filen finns på den här enheten och sedan först korrigera diskfelen.

  • Använd SQLIOSim-verktyget för att ta reda på om dessa 824-fel kan återskapas utanför vanliga SQL Server I/O-begäranden. SQLIOSim levereras med SQL Server 2008 (10.0.x) och senare versioner, så det finns inget behov av en separat nedladdning.

  • Arbeta med maskinvaruleverantören eller enhetstillverkaren för att säkerställa följande:

    • Maskinvaruenheterna och konfigurationen uppfyller I/O-kraven för SQL Server.
    • Enhetsdrivrutinerna och andra stödjande programvarukomponenter för alla enheter i I/O-sökvägen uppdateras.
  • Om maskinvaruleverantören eller enhetstillverkaren försåg dig med några diagnostikverktyg använder du dem för att utvärdera I/O-systemets hälsa.

  • Utvärdera om det finns filterdrivrutiner på I/O-sökvägen för dessa begäranden. Du kan köra följande kommandon för att visa alla filterdrivrutiner i systemet:

    fltmc filters
    fltmc instances
    
    • Undanta databas- och loggfiler från att genomsökas av sådana filterdrivrutiner. Mer information finns i Kataloger och filnamnstillägg som ska undantas från virusgenomsökning
    • Kontrollera om det finns några uppdateringar av dessa filterdrivrutiner
    • Kan dessa filterdrivrutiner tas bort eller inaktiveras för att se om problemet som resulterar i 824-felet försvinner?
  • Om du kör en virtuell dator ska du se till att alla virtualiseringsdrivrutiner uppdateras eller kontakta virtualiseringsleverantören om du vill ha mer information.

  • Om problemet inte är maskinvarurelaterat och en känd ren säkerhetskopia är tillgänglig återställer du databasen från säkerhetskopian.