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


MSSQLSERVER-hiba: 823

A következőkre vonatkozik:SQL Server

Részletek

Jellemző Érték
Terméknév SQL Server
Eseményazonosító 823
Eseményforrás MSSQLSERVER
Összetevő SQLEngine
Szimbolikus név B_HARDERR
Üzenet szövege Az operációs rendszer %ls hibát adott vissza az SQL Servernek a %S_MSG során a %#016I64x eltolásnál az '%ls' fájlban. Az SQL Server hibanaplójában és a rendszeresemény-naplóban található további üzenetek részletesebb információkat nyújthatnak. Ez egy súlyos rendszerszintű 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ó: SQL Server Books Online.

Magyarázat

Az SQL Server Windows API-kat( például ReadFile, WriteFile, ReadFileScatter és WriteFileGather) használ a fájl I/O-műveleteinek végrehajtásához. Miután az SQL Server végrehajtja ezeket az I/O-műveleteket, ellenőrzi az API-hívásokhoz társított hibafeltételeket. Ha az API-hívások operációs rendszer (OS) hibával hiúsulnak meg, az SQL Server a 823-at jelenti.

A 823-at tartalmazó hibaüzenet a következő információkat tartalmazza:

  • Az az adatbázisfájl, amelyen az I/O-műveletet végrehajtották.

  • Annak a fájlnak az eltolása, amelyben az I/O-műveletet megkísérelték. Ez az eltolás a fájl elejétől a fizikai bájt eltolása. Ha ezt a számot 8192-sel osztja el, a hiba által érintett logikai oldalszámot adja meg.

  • Az I/O-művelet írási vagy olvasási kérelem-e.

  • Az operációs rendszer hibakódja és hibaleírása zárójelben.

Az operációs rendszer által generált hibák

Az operációs rendszer hibája akkor fordul elő, ha egy olvasási vagy írási Windows API-hívás nem sikerül, és az SQL Server a Windows API-híváshoz kapcsolódó operációsrendszer-hibát tapasztal. Az alábbi üzenet egy 823-ra vonatkozó hibára mutat példát:

Error: 823, Severity: 24, State: 2.
The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. 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. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

A DBCC CHECKDB által generált hibák

A hibaüzenetben megjelenhetnek a DBCC CHECKDB fájlhoz társított adatbázisban található utasítás hibái. Az utasítást DBCC CHECKDB akkor futtathatja, ha 823-at lát. Ha az DBCC CHECKDB utasítás nem jelent hibát, valószínűleg időszakos rendszerhiba vagy lemezhiba lépett fel.

A 823-ra vonatkozó további diagnosztikai információk az SQL Server hibanapló-fájljában láthatók a 818-at jelző nyomkövetési jelző használatával. További információ: SQL Server-diagnosztika elavult olvasások vagy elveszett írásimiatt nem jelentett I/O-problémákat észlel.

Oka

A 823-ban megjelenő hibaüzenet általában azt jelzi, hogy probléma van a mögöttes tárolórendszerrel, vagy az I/O-kérés elérési útján található hardverrel vagy 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. Fájlolvasás esetén az SQL Server négyszer újrapróbálkozza az olvasási kérést, mielőtt visszaadja a 823-at. Ha az újrapróbálkozási művelet sikeres, a lekérdezés nem hiúsul meg, de az MSSQLSERVER_825 üzenet be van írva az ERRORLOG és az eseménynaplóba.

Felhasználói művelet

  • Tekintse át a suspect_pages táblázatot msdb azoknak a lapoknak, amelyeknél ez a probléma jelentkezik (ugyanabban az adatbázisban vagy különböző adatbázisokban).

  • Ellenőrizze az ugyanazon a köteten (a 823-as üzenetben jelentett) adatbázisok konzisztenciáját a DBCC CHECKDB paranccsal. Ha inkonzisztenciákat talál a DBCC CHECKDB parancsból, használja a DBCC CHECKB által jelentett adatbáziskonzisztencia-hibák elhárítására vonatkozó útmutatót.

  • 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 823-at tartalmazó ü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óban a lemezforrás á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 ki kell javítania ezeket a lemezhibákat.

  • Az SQLIOSim segédprogrammal megtudhatja, hogy ezek a 823-as hibák reprodukálhatók-e a szokásos SQL Server I/O-kéréseken kívül. Az SQLIOSim segédprogram az SQL Server 2008-as és újabb verzióit használja, így nincs szükség külön letöltésre. Általában a mappában C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn található.

  • 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 elérési útján található összes eszköz illesztőprogramjai és egyéb támogató szoftverösszetevői naprakészek.
  • 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 vannak-e olyan szűrőillesztők , amelyek problémákat tapasztalnak ezen I/O-kérések elérési útján.

    • Ellenőrizze, hogy vannak-e frissítések ezekhez a szűrőillesztőkhöz.

    • Eltávolíthatja vagy letilthatja ezeket a szűrőillesztőket, és megfigyelheti, hogy a 823-at eredményező probléma eltűnik?

Példa 21-os operációsrendszer-hibával

Ebben az esetben a mögöttes 21-os operációsrendszer-hiba azt jelzi, hogy a lemezeszköz offline állapotban van, és nem érhető el az operációs rendszer és az SQL Server számára.

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 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. 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. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Resolution

Ha hasonló forgatókönyvet tapasztal, oldja meg a mögöttes operációs rendszer hibáját. Ebben az esetben a rendszergazdával és a hardvergyártóval együttműködve győződjön meg arról, hogy a lemezeszköz online állapotban van, és megfelelően működik. Győződjön meg arról, hogy nincsenek jelentett hibák vagy károk.

Az instabil hálózati kapcsolat is okozhatja ezt a hibát, például ha az adatbázisfájlokat a hálózaton keresztül elért hálózati tárolóban (NAS) vagy SAN-eszközön tárolják. Ilyen esetekben előfordulhat, hogy a DBCC CHECKDB futtatásával ellenőriznie kell az adatbázisok fizikai integritását, miután a lemezeszközt visszaállították. Ha adatbázis-sérülésről van szó, állítsa vissza az utolsó ismert, jó adatbázis-biztonsági mentést.