Freigeben über


MSSQLSERVER_824

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 824
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name B_HARDSSERR
Meldungstext SQL Server hat einen logischen, konsistenzbasierten E/A-Fehler gefunden: %ls Der Fehler ist beim %S_MSG von Seite %S_PGID in der Datenbank mit der ID %d bei Offset %#016I64x in der Datei '%ls' aufgetreten. Weitere Informationen finden Sie möglicherweise in den zusätzlichen Meldungen der Fehlerprotokolle im SQL Server oder im Betriebssystem-Fehlerprotokoll. Dies ist ein schwerer Fehler, der die Datenbankintegrität bedroht und sofort behoben werden muss. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) aus. Dieser Fehler kann viele Ursachen haben. Weitere Informationen finden Sie in https://go.microsoft.com/fwlink/?linkid=2252374.

Symptom

Möglicherweise tritt die folgende Fehlermeldung im SQL Server-Fehlerprotokoll oder dem Windows-Anwendungsereignisprotokoll auf, wenn eine logische Konsistenzprüfung fehlschlägt, nachdem eine Datenbankseite gelesen oder geschrieben wurde:

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.

Wenn eine SELECT- oder DML-Abfrage in dieser Meldung ausgeführt wird, wird die Fehlermeldung an die Anwendung zurückgegeben und die Datenbankverbindung wird beendet.

Ursache

Mit diesem Fehler wird angegeben, dass in Windows eine Meldung ausgegeben wurde, gemäß der die Seite erfolgreich vom Datenträger gelesen, aber in SQL Server ein Fehler auf der Seite festgestellt wurde. Dieser Fehler ist mit dem Fehler 823 vergleichbar, nur wurde er nicht von Windows erkannt. Fehler 824 führt in der Regel zu einem Problem im E/A-Subsystem. Dazu gehören beispielsweise der Ausfall von Festplattenlaufwerken, Firmwareprobleme auf Datenträgern, fehlerhafte Gerätetreiber usw. Weitere Informationen zu E/A-Fehlern finden Sie unter Microsoft SQL Server I/O Basics, Chapter 2 (E/A-Grundlagen von Microsoft SQL Server, Kapitel 2).

SQL Server verwendet die folgenden Windows-APIs zum Ausführen der E/A-Vorgänge: ReadFile, WriteFile, ReadFileScatter und WriteFileGather. Nachdem diese E/A-Vorgänge ausgeführt wurden, prüft SQL Server nach Fehlerbedingungen im Zusammenhang mit diesen API-Aufrufen. Wenn diese API-Aufrufe mit einem Betriebssystemfehler fehlschlagen, meldet SQL Server den Fehler 823. Es kann Situationen geben, in denen ein Windows-API-Aufruf tatsächlich erfolgreich durchgeführt wird, aber die vom E/A-Vorgang übertragenen Daten möglicherweise ein logisches Konsistenzproblem aufweisen. Solche logischen Konsistenzprobleme werden von Fehler 824 gemeldet.

Der Fehler 824 enthält die folgenden Informationen:

  • Die Datenbankdatei, für die der E/A-Vorgang durchgeführt wurde
  • Das Offset mit der Datei, in der der E/A-Vorgang versucht wurde
  • Die Datenbank, zu der die Datei gehört
  • Die Seitenzahl, die am E/A-Vorgang beteiligt war
  • Ob es sich bei dem Vorgang um einen Lese- oder Schreibvorgang handelte
  • Details zur fehlgeschlagenen logischen Konsistenzprüfung [Die Art der Prüfung, der tatsächliche Wert und der erwartete Wert für diese Überprüfung]

Bei diesen logischen Konsistenzprüfungen handelt es um Integritätsprüfungen, die von SQL Server durchgeführt werden, um sicherzustellen, dass gewisse Schlüsselelemente der Daten, die an der E/A-Übertragung beteiligt waren, während des E/A-Vorgangs beibehalten wurden. Zu den Überprüfungen gehören: Prüfsumme, zerrissene Seiten, Kurztransfer, fehlerhafte Seiten-ID, veraltete Lesevorgänge und Seitenüberwachungsfehler. Die Art der durchgeführten Prüfungen variiert abhängig von den verschiedenen Konfigurationsoptionen auf Datenbank- und Serverebene.

Die Fehlermeldung 824 deutet in der Regel auf ein Problem mit dem zugrunde liegenden Speichersystem, der Hardware oder einem Treiber hin, 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.

Lösung

Wenn bei Ihnen der Fehler 824 auftritt, können Sie die folgenden Lösungen ausprobieren:

  • Überprüfen Sie die Tabelle suspect_pages in msdb, um zu überprüfen, ob andere Seiten [in derselben Datenbank oder verschiedenen Datenbanken] dieses Problem aufweisen.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Überprüfen Sie mithilfe des Befehls DBCC CHECKDB die Konsistenz der Datenbanken, die sich auf dem gleichen Volume befinden, [das in der 824-Fehlermeldung genannt wird]. Wenn Sie mit dem DBCC CHECKDB Befehl Inkonsistenzen ermitteln, befolgen Sie die Anweisungen im Knowledge Base-Artikel How to troubleshoot database consistency errors reported by DBCC CHECKB (Problembehandlung für von DBCC CHECKDB gemeldete Datenbankkonsistenzfehler).

    DBCC CHECKDB;
    
  • Wenn die PAGE_VERIFY CHECKSUM Datenbankoption nicht für die Datenbank aktiviert ist, bei der diese 824-Fehler auftreten, sollten Sie sie umgehend aktivieren. Für 824-Fehler können andere Gründe als für Prüfsummenfehler vorliegen, jedoch bietet CHECKSUM die beste Option zum Überprüfen der Konsistenz der Seite, nachdem sie auf den Datenträger geschrieben wurde. Verwenden Sie dieses Skript, um Datenbanken zu identifizieren, bei denen die CHECKUM-Option nicht aktiviert ist:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Ü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 diesem Fehler stehen, sollten Sie diese zuerst beheben. Wenn Sie neben der 824-Fehlermeldung beispielsweise ein Ereignis wie „Der Treiber hat einen Controllerfehler auf „\Device\Harddisk4\DR4“ gefunden“ finden, das im Ereignisprotokoll von der Datenträgerquelle 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 824-Fehler außerhalb der regulären E/A-Anforderungen von SQL Server reproduziert werden können. Das SQLIOSim-Hilfsprogramm ist in SQL Server 2008 (10.0.x) und höheren Versionen enthalten. Es ist also kein separater Download erforderlich.

  • Wenden Sie sich an Ihren Hardware- oder Gerätehersteller, um Folgendes sicherzustellen:

    • Die Hardwaregeräte und ihre 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 E/A-Pfad dieser Anforderungen enthalten sind. Sie können die folgenden Befehle ausführen, um alle Filtertreiber auf dem System auflisten zu können:

    fltmc filters
    fltmc instances
    
    • Schließen Sie Datenbank- und Protokolldateien von der Überprüfung durch solche Filtertreiber aus. Weitere Informationen finden Sie unter Verzeichnisse und Dateinamenerweiterungen, die vom Virenscan ausgeschlossen werden sollen
    • Ü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 824-Fehler führt, dadurch behoben wird?
  • Wenn Sie einen virtuellen Computer ausführen, stellen Sie sicher, dass alle Virtualisierungstreiber aktualisiert werden, oder wenden Sie sich an den Virtualisierungsanbieter, um weitere Informationen zu erhalten.

  • Wenn das Problem nicht hardwarebedingt ist und eine bekanntermaßen fehlerfreie Sicherung zur Verfügung steht, stellen Sie die Datenbank mithilfe der Sicherung wieder her.