Megosztás a következőn keresztül:


MSSQLSERVER_824

A következőkre vonatkozik:SQL Server

Részletek

Attribute Érték
Termék neve SQL Server
Eseményazonosító 824
Eseményforrás MSSQLSERVER
Komponens SQLEngine
Szimbolikus név B_HARDSSERR
Üzenet szövege Az SQL Server logikai konzisztenciaalapú I/O-hibát észlelt: %ls. A fájl ‘%ls’ %#016I64x eltolásánál, az adatbázis ID %d egy %S_MSG üzenet során, a %S_PGID oldalon történt. Az SQL Server hibanaplójában vagy az operációs rendszer hibanaplójában található további üzenetek részletesebb információkat nyújthatnak. Ez egy súlyos hibaállapot, amely veszélyezteti az adatbázis integritását, és azonnal ki kell javítani. Teljes adatbáziskonzisztencia-ellenőrzést (DBCC CHECKDB) végezhet. Ezt a hibát számos tényező okozhatja; további információkért lásd: https://go.microsoft.com/fwlink/?linkid=2252374.

tüneti

A következő hibaüzenet jelenhet meg az SQL Server hibanaplójában vagy a Windows-alkalmazás eseménynaplójában, ha egy logikai konzisztencia-ellenőrzés meghiúsul egy adatbázisoldal olvasása vagy írása után:

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.

Ha egy SELECT vagy DML lekérdezés fut ebbe az üzenetbe, a hibaüzenet visszakerül az alkalmazásba, és az adatbázis-kapcsolat megszakad.

Oka

Ez a hiba azt jelzi, hogy a Windows arról számol be, hogy az oldal sikeresen be lett olvasva a lemezről, de az SQL Server hibát észlelt az oldalon. Ez a hiba a 823-hoz hasonló, azzal a kivételt leszámítva, hogy a Windows nem észlelte a hibát. A 824-as hiba általában az I/O-alrendszerben fellépő problémát jelez, például a hibás lemezmeghajtókat, a belső vezérlőprogrammal kapcsolatos problémákat, a hibás eszközillesztőket stb. Az I/O-hibákról további információt a Microsoft SQL Server I/O alapjai 2. fejezetében talál.

Az SQL Server a következő Windows API-kat használja az I/O-műveletek végrehajtásához: ReadFile, WriteFile, ReadFileScatterés WriteFileGather. Az I/O-műveletek elvégzése után az SQL Server ellenőrzi az API-hívásokhoz kapcsolódó hibafeltételeket. Ha ezek az API-hívások operációs rendszer hibát okoznak, akkor az SQL Server a 823-as hibát jelenti. Lehetnek olyan helyzetek, amikor a Windows API-hívás valóban sikeres, de az I/O-művelet által továbbított adatok logikai konzisztenciaproblémát tapasztalhattak. Ezeket a logikai konzisztenciaproblémákat a rendszer a 824-s hibával jelenti.

A 824-hiba a következő információkat tartalmazza:

  • Az adatbázisfájl, amelyen az I/O-műveletet végrehajtják
  • Az eltolás azzal a fájllal, amelyben az I/O-műveletet megkísérelték
  • Az adatbázis, amelyhez ez a fájl tartozik
  • Az I/O műveletben érintett oldalszám
  • Egy olvasási vagy írási művelet volt?
  • A sikertelen logikai konzisztencia-ellenőrzés részletei (az ellenőrzés típusa, a tényleges érték és az ellenőrzéshez használt várt érték)

Ezek a logikai konzisztencia-ellenőrzések az SQL Server által végrehajtott integritás-ellenőrzések, amelyek biztosítják, hogy az I/O-átvitelben érintett adatok kulcsfontosságú elemei érintetlenek maradnak az I/O-művelet során. Az ellenőrzések közé tartozik az Ellenőrzőösszeg, a Felszakadt oldal, a Rövid átvitel, a Hibás oldalazonosító, az Elavult olvasás és az Oldalellenőrzési hiba. Az elvégzett ellenőrzések jellege az adatbázis és a kiszolgáló szintjén különböző konfigurációs lehetőségektől függően változik.

A 824-ben megjelenő hibaüzenet általában azt jelzi, hogy probléma van a mögöttes tárolórendszerrel, a hardverrel vagy az I/O-kérés elérési útjában lévő illesztőprogrammal. Ez a hiba akkor fordulhat elő, ha a fájlrendszer inkonzisztenciákba ütközik, vagy ha az adatbázisfájl sérült.

Resolution

Ha a 824-s hibát tapasztalja, próbálkozzon a következő megoldásokkal:

  • Tekintse át a suspect_pages táblázatot, msdb és ellenőrizze, hogy más lapok (ugyanabban az adatbázisban vagy különböző adatbázisokban) tapasztalják-e ezt a problémát.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Ellenőrizze az ugyanabban a kötetben található adatbázisok konzisztenciáját (a 824-ben jelentettvel megegyező módon) a DBCC CHECKDB paranccsal. Ha inkonzisztenciákat talál a DBCC CHECKDB parancsból, használja a Tudásbázis útmutatóját a DBCC CHECKDB által jelentett adatbáziskonzisztencia-hibák elhárításához.

    DBCC CHECKDB;
    
  • Ha a 824-es hibával találkozó adatbázisban nincs bekapcsolva az PAGE_VERIFY CHECKSUM adatbázis-beállítás, azonnal aktiválja azt. A 824-ből 824 hiba fordulhat elő az ellenőrzőösszeg hibáján kívül más okból is, de a CHECKSUM biztosítja a legjobb lehetőséget az oldal konzisztenciájának ellenőrzésére a lemezre való írás után. Ezzel a szkripttel azonosíthatja azokat az adatbázisokat, ahol a CHECKSUM beállítás nincs engedélyezve:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Tekintse át a Windows eseménynaplóit az operációs rendszer, a tárolóeszköz vagy az eszközillesztő által jelentett hibákért vagy üzenetekért. Ha valamilyen módon kapcsolódnak ehhez a hibához, először ezeket a hibákat kell elhárítania. A 824-ben megjelenő üzeneten kívül például egy olyan eseményt is észlelhet, mint a "Az illesztőprogram vezérlőhibát észlelt az eseménynapló lemezforrása által jelentett \Device\Harddisk4\DR4 eszközön". Ebben az esetben ki kell értékelnie, hogy a fájl megtalálható-e az eszközön, majd először ki kell javítania ezeket a lemezhibákat.

  • Az SQLIOSim segédprogrammal megtudhatja, hogy ezek a 824-hibák reprodukálhatók-e a szokásos SQL Server I/O-kéréseken kívül. Az SQLIOSim az SQL Server 2008 (10.0.x) és újabb verzióit használja, így nincs szükség külön letöltésre.

  • A hardvergyártóval vagy az eszköz gyártójával együttműködve győződjön meg arról, hogy:

    • A hardvereszközök és a konfiguráció megfelel az SQL Server I/O-követelményeinek.
    • Az I/O útvonalon található összes eszköz eszközillesztői és egyéb támogató szoftverösszetevői frissülnek.
  • Ha a hardvergyártó vagy az eszköz gyártója bármilyen diagnosztikai segédprogramot biztosított Önnek, használja őket az I/O-rendszer állapotának kiértékelésére.

  • Értékelje ki, hogy léteznek-e szűrőillesztők a kérések I/O-útvonalán. A rendszer összes szűrőillesztőjének listázásához futtassa az alábbi parancsokat:

    fltmc filters
    fltmc instances
    
    • Az adatbázis- és naplófájlok kizárása a beolvasásból az ilyen szűrőillesztők használatakor. További információ: Könyvtárak és fájlnévkiterjesztések a víruskeresésből való kizáráshoz
    • Ellenőrizze, hogy vannak-e frissítések ezekhez a szűrőillesztőkhöz
    • Eltávolíthatók vagy letilthatók ezek a szűrőillesztők annak megfigyelése érdekében, hogy a 824-et eredményező probléma eltűnik-e?
  • Ha virtuális gépet futtat, győződjön meg arról, hogy az összes virtualizálási illesztőprogram frissül, vagy további információért forduljon a virtualizálás gyártójához.

  • Ha a probléma nem hardverrel kapcsolatos, és egy ismert tiszta biztonsági mentés érhető el, állítsa vissza az adatbázist a biztonsági másolatból.