MSSQLSERVER-Fehler 823

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 823
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name B_HARDERR
Meldungstext Das Betriebssystem hat während eines %S_MSG bei Offset %#016I64x in der Datei '%4!s!' den Fehler '%ls' an SQL Server zurückgegeben. Weitere Informationen finden Sie möglicherweise in zusätzlichen Meldungen im SQL Server-Fehlerprotokoll und im Systemereignisprotokoll. Dieser Fehler kann die Datenbankintegrität beeinträchtigen und muss behoben werden. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) aus. Dieser Fehler kann viele Ursachen haben. Weitere Informationen finden Sie in der SQL Server-Onlinedokumentation.

Erklärung

SQL Server nutzt Windows-APIs (zum Beispiel ReadFile, WriteFile, ReadFileScatter, WriteFileGather), um Datei-E/A-Vorgänge durchzuführen. Nachdem diese E/A-Vorgänge durchgeführt wurden, prüft SQL Server nach Fehlerbedingungen im Zusammenhang mit diesen API-Aufrufen. Wenn die API-Aufrufe mit einem Betriebssystemfehler fehlschlagen, meldet SQL Server den Fehler 823.

Die 823-Fehlermeldung enthält folgende Informationen:

  • Die Datenbankdatei, für die der E/A-Vorgang durchgeführt wurde.
  • Das Offset in der Datei, an dem versucht wurde, den E/A-Vorgang durchzuführen. Dies ist das physische Byte-Offset vom Beginn der Datei. Wenn Sie diese Zahl durch 8192 teilen, erhalten Sie die logische Seitenzahl, die vom Fehler betroffen ist.
  • Die Information, ob der E/A-Vorgang eine Lese- oder Schreibanforderung ist.
  • Der Fehlercode für den Betriebssystemfehler und die zugehörige Fehlerbeschreibung in Klammern.

Betriebssystemfehler: Ein Windows-API-Aufruf mit Lese- oder Schreibzugriff ist nicht erfolgreich, und SQL Server tritt auf einen Betriebssystemfehler auf, der sich auf den Windows-API-Aufruf bezieht. In der folgenden Beispielmeldung wird ein 823-Fehler veranschaulicht:

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 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.

Fehler der DBCC CHECKDB-Anweisung für die Datenbank, die der in der Fehlermeldung genannten Datei zugeordnet ist, werden möglicherweise nicht angezeigt. Sie können die DBCC CHECKDB-Anweisung ausführen, wenn ein 823-Fehler auftritt. Wenn die DBCC CHECKDB-Anweisung keine Fehler zurückgibt, liegt vermutlich ein vorübergehendes Systemproblem oder ein Datenträgerproblem vor.

Wenn Sie das Ablaufverfolgungsflag 818 verwenden, werden möglicherweise zusätzliche Diagnoseinformationen für 823-Fehler in die SQL Server-Fehlerprotokolldatei geschrieben. Weitere Informationen finden Sie unter KB 826433: Zusätzliche SQL Server-Diagnose hinzugefügt, um nicht gemeldete E/A-Probleme zu erkennen

Ursache

Die 823-Fehlermeldung weist in der Regel darauf hin, dass ein Problem mit dem zugrunde liegenden Speichersystem, der Hardware oder einem Treiber vorliegt, der sich im Pfad der E/A-Anforderung befindet. Dieser Fehler kann auftreten, wenn Inkonsistenzen im Dateisystem vorliegen oder wenn die Datenbankdatei beschädigt ist. Bei Dateilesevorgängen wiederholt SQL Server die Leseanforderung viermal, bevor der 823-Fehler zurückgegeben wird. Wenn der Wiederholungsvorgang erfolgreich durchgeführt wird, schlägt die Abfrage nicht fehl, aber die Meldung 825 wird in ERRORLOG und das Ereignisprotokoll geschrieben.

Benutzeraktion

  • Überprüfen Sie die Tabelle suspect_pages in MSDB auf weitere Seiten, bei denen dieses Problem auftritt (in der gleichen Datenbank oder in anderen).
  • Überprüfen Sie mithilfe des Befehls DBCC CHECKDB die Konsistenz der Datenbanken, die sich auf demselben Volume (das in der 823-Fehlermeldung genannt wird) befinden. Wenn Sie mit dem Befehl DBCC CHECKDB Inkonsistenzen ermitteln, befolgen Sie die Anweisungen unter How to troubleshoot database consistency errors reported by DBCC CHECKB (Problembehandlung für von DBCC CHECKDB gemeldete Datenbankkonsistenzfehler).
  • Überprüfen Sie das Windows-Ereignisprotokoll auf Fehler und Meldungen vom Betriebssystem, einem Speichergerät oder einem Gerätetreiber. Wenn Sie Fehler ermitteln, die im Zusammenhang mit dem 823-Fehler stehen, sollten Sie diese zuerst beheben. Abgesehen von der 823-Fehlermeldung finden Sie im Ereignisprotokoll möglicherweise ein Ereignis wie „Der Treiber hat einen Controllerfehler auf „\Device\Harddisk4\DR4“ gefunden, das vom Quelldatenträger gemeldet wurde. In diesem Fall müssen Sie ermitteln, ob sich diese Datei auf dem Gerät befindet, und zuerst diese Datenträgerfehler beheben.
  • Verwenden Sie das Hilfsprogramm SQLIOSim, um herauszufinden, ob die 823-Fehler außerhalb der regulären E/A-Anforderungen von SQL Server reproduziert werden können. Das SQLIOSim-Hilfsprogramm ist in SQL Server 2008 und höheren Versionen enthalten. Es ist also kein separater Download erforderlich. Normalerweise befindet es sich im Ordner C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.
  • Arbeiten Sie mit Ihrem Hardwareanbieter oder Gerätehersteller zusammen, um sicherzustellen, dass
    • Die Hardwaregeräte und Konfiguration entsprechen den E/A-Voraussetzungen von SQL Server.
    • Die Gerätetreiber und andere unterstützende Softwarekomponenten aller Geräte im E/A-Pfad sind auf dem neuesten Stand.
  • Wenn der Hardware- oder Gerätehersteller Ihnen Diagnoseprogramme bereitgestellt hat, verwenden Sie diese um die Integrität des E/A-Systems auszuwerten.
  • Ermitteln Sie, ob Filtertreiber im Pfad der E/A-Anforderungen enthalten sind, bei denen Probleme auftreten.
    • Überprüfen Sie, ob es Updates für diese Filtertreiber gibt.
    • Überprüfen Sie, ob diese Filtertreiber entfernt oder deaktiviert werden können, um zu testen, ob das Problem, das zum 823-Fehler führt, dadurch behoben wird.