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 Meldungen im SQL Server-Fehlerprotokoll oder Betriebssystemfehlerprotokoll enthalten möglicherweise weitere Details. 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 durch viele Faktoren verursacht werden; weitere Informationen finden Sie unter 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

Dieser Fehler gibt an, dass Windows meldet, dass die Seite erfolgreich vom Datenträger gelesen wurde, aber SQL Server hat festgestellt, dass bei der Seite ein Fehler aufgetreten ist. Dieser Fehler ähnelt Fehler 823, mit der Ausnahme, dass Windows den Fehler nicht erkannt hat. Fehler 824 weist in der Regel auf ein Problem im E/A-Subsystem hin, z. B. fehlerhafte Datenträgerlaufwerke, Firmwareprobleme, 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, ReadFileScatterund WriteFileGather. Nach Abschluss dieser E/A-Vorgänge sucht SQL Server nach fehlern, die diesen API-Aufrufen zugeordnet sind. Wenn diese API-Aufrufe mit einem Betriebssystemfehler fehlschlagen, meldet SQL Server Fehler 823. Es kann Situationen geben, in denen der Windows-API-Aufruf tatsächlich erfolgreich ist, aber die vom E/A-Vorgang übertragenen Daten haben möglicherweise ein logisches Konsistenzproblem verursacht. 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 logischen Konsistenzüberprüfung, die fehlgeschlagen ist (der Typ der Überprüfung, der tatsächliche Wert und der erwartete Wert, der für diese Überprüfung verwendet wird)

Diese logischen Konsistenzüberprüfungen sind Integritätsprüfungen, die von SQL Server durchgeführt werden, um sicherzustellen, dass wichtige Elemente der Daten, die an der erneuten E/A-Übertragung beteiligt waren Standard während des gesamten E/A-Vorgangs intakt sind. Zu den Prüfungen gehören Checksum, Torn Page, Short transfer, Bad Page ID, Stale Read und Page Audit Failure. Die Art der durchgeführten Prüfungen variiert abhängig von den verschiedenen Konfigurationsoptionen auf Datenbank- und Serverebene.

Die Fehlermeldung 824 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.

Lösung

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

  • Überprüfen Sie die suspect_pages Tabelle, msdb um zu überprüfen, ob auf anderen Seiten (in derselben Datenbank oder unterschiedlichen Datenbanken) dieses Problem auftritt.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Überprüfen Sie die Konsistenz der Datenbanken, die sich in demselben Volume befinden (wie die in der 824-Nachricht gemeldete), mithilfe des DBCC CHECKDB-Befehls. Wenn Sie Inkonsistenzen aus dem Befehl finden, verwenden Sie die Anleitungen aus dem DBCC CHECKDB Knowledge Base-Artikel Zur Problembehandlung von Datenbankkonsistenzfehlern, die von DBCC CHECKDB gemeldet wurden.

    DBCC CHECKDB;
    
  • Wenn die Datenbank, bei der diese 824 Fehler auftreten, nicht die PAGE_VERIFY CHECKSUM Datenbankoption aktiviert ist, aktivieren Sie die Option sofort. 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 auf irgendeine Weise mit diesem Fehler zusammenhängen, sollten Sie diese Fehler zuerst beheben. Abgesehen von der 824-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 Hilfsprogramm SQLIOSim, um herauszufinden, ob die 824-Fehler außerhalb der regulären E/A-Anforderungen von SQL Server reproduziert werden können. SQLIOSim wird mit SQL Server 2008 (10.0.x) und höheren Versionen ausgeliefert, sodass kein separater Download erforderlich ist.

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

    • 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.

  • Bewerten Sie, ob Filtertreiber vorhanden sind, die im E/A-Pfad dieser Anforderungen vorhanden sind. Sie können die folgenden Befehle ausführen, um alle Filtertreiber auf dem System auflisten zu können:

    fltmc filters
    fltmc instances
    
  • 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 hardwarebezogen ist und eine bekannte sauber Sicherung verfügbar ist, stellen Sie die Datenbank aus der Sicherung wieder her.