Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Einzelheiten
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 SQL Server diese E/A-Vorgänge ausgeführt hat, wird nach allen Fehlerbedingungen gesucht, die diesen API-Aufrufen zugeordnet sind. 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 ausgefü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 8.192 dividieren, erhalten Sie die logische Seitenzahl, die vom Fehler betroffen ist.
- Gibt an, ob der E/A-Vorgang eine Lese- oder Schreibanforderung ist.
- Der Fehlercode und die Fehlerbeschreibung des Betriebssystems 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.
Möglicherweise werden Fehler aus der DBCC CHECKDB-Anweisung in der Datenbank angezeigt, die der Datei in der Fehlermeldung zugeordnet ist. Sie können die DBCC CHECKDB-Anweisung ausführen, wenn ein 823-Fehler auftritt. Wenn die DBCC CHECKDB-Anweisung keine Fehler meldet, liegt wahrscheinlich ein zeitweiliges Systemproblem oder ein Datenträgerproblem vor.
Zusätzliche Diagnoseinformationen für 823 Fehler können in die SQL Server-Fehlerprotokolldatei geschrieben werden, wenn Sie das Ablaufverfolgungskennzeichnung 818 verwenden. Weitere Informationen finden Sie in der SQL Server-Diagnose, bei der aufgrund veralteter Lesevorgänge oder verlorener Schreibvorgänge nicht gemeldete E/A-Probleme erkannt werden.
Ursache
Die Fehlermeldung 823 weist in der Regel darauf hin, dass ein Problem mit dem zugrunde liegenden Speichersystem oder 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. Für einen Dateilesevorgang hat SQL Server die Leseanforderung bereits viermal wiederholt, bevor sie 823 zurückgibt. Wenn der Wiederholungsvorgang erfolgreich ist, schlägt die Abfrage nicht fehl, aber die Meldung MSSQLSERVER_825 wird in das ERRORLOG- und Ereignisprotokoll geschrieben.
Benutzeraktion
Überprüfen Sie die suspect_pages Tabelle
msdb
auf anderen Seiten, auf denen dieses Problem auftritt (in derselben Datenbank oder unterschiedlichen Datenbanken).Ü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 auf irgendeine Weise mit diesem Fehler zusammenhängen, beheben Sie diese Fehler zuerst. Abgesehen von der 823-Meldung können Sie beispielsweise auch ein Ereignis wie "Der Treiber hat einen Controllerfehler auf \Device\Harddisk4\DR4" feststellen, der von der Datenträgerquelle im Ereignisprotokoll 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 SQLIOSim-Hilfsprogramm zum Simulieren der SQL Server-Aktivität auf einem Datenträgersubsystemprogramm , um herauszufinden, ob diese 823 Fehler außerhalb regulärer SQL Server-E/A-Anforderungen reproduziert werden können. Das SQLIOSim-Hilfsprogramm wird mit SQL Server 2008 und höheren Versionen ausgeliefert, sodass kein separater Download erforderlich ist. 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-Anforderungen 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.
- Können diese Filtertreiber entfernt oder deaktiviert werden, um festzustellen, ob das Problem, das zu dem Fehler 823 führt, abläuft?