Freigeben über


MSSQLSERVER_832

Gilt für:SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 832
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name B_CONSTPAGECHANGED
Meldungstext Eine Seite, die konstant sein sollte, wurde geändert (erwartete Prüfsumme: erwarteter Wert>, tatsächliche Prüfsumme: <tatsächlicher Wert>, Datenbankdbid<>, Dateiname<>, Pageno<>). < Dies weist normalerweise auf einen Arbeitsspeicherfehler oder auf Schäden an der Hardware oder dem Betriebssystem hin.

Erklärung

Ein externer Faktor hat bewirkt, dass eine Datenbankseite außerhalb des normalen SQL Server-Engine-Codes geändert wird, der zum Ändern von Datenbankseiten verwendet wird. Die Bedingungen können wie folgt lauten:

  • Ein Thread, der im SQL Server-Prozess ausgeführt wird und auf einer Datenbankseite falsche Schreibvorgänge durchführt. Dieser wird häufig als „Scribbler“ bezeichnet.
  • Ein Problem mit der Hardware oder dem Betriebssystem, bei dem der Arbeitsspeicher, der die Datenbankseite stützt, nicht korrekt geändert wurde oder beschädigt ist.

Wenn SQL Server diesen Fehler erkennt, wird der Fehler 832 ausgelöst.

Benutzeraktion

Sie haben die folgenden Möglichkeiten, um die Ursache des Fehlers zu ermitteln:

  • Sie sollten normale Hardware- oder Systemüberprüfungen durchführen, um herauszufinden, ob ein Problem mit dem Arbeitsspeicher oder der CPU oder ein anderes Hardwareproblem vorliegt. Stellen Sie sicher, dass Sie über alle Systemtreiber verfügen und Ihr Betriebssystem und Ihre Hardware auf dem neusten Stand sind. Führen Sie ggf. eine beliebige Diagnose eines Hardwareherstellers einschließlich speicherbezogener Tests durch.
  • Prüfen Sie, welche externen DLLs in SQL Server geladen werden können, auf die dieses Problem zurückzuführen sein könnte, einschließlich erweiterter gespeicherter Prozeduren, COM-Objekte oder anderer DLLs, die möglicherweise falsche Änderungen am SQL Server-Arbeitsspeicher vornehmen, der für Datenbankseiten reserviert ist.

Wenn dieser Fehler angezeigt wird, sollten Sie sofort die Ausführung DBCC CHECKDB für die Datenbank in Erwägung ziehen, auf die <der dbid> in der Fehlermeldung verweist.

Weitere Informationen

Dieser Fehler wird von dem Hintergrundtask erkannt, der häufig als „LazyWriter“ bezeichnet wird. (Der „Befehl“ für diesen Task lautet LAZY WRITER.) Daher wird dieser Fehler nicht an eine Clientanwendung zurückgegeben. Der Fehler wird in das Windows-Anwendungsereignisprotokoll als EventID=832 geschrieben.

Nur Seiten, die derzeit nicht im Cache geändert werden, werden geprüft. Der Grund hierfür ist, dass die Meldung den Begriff „konstant“ verwendet, da die Seite nie geändert wurde, nachdem sie vom Datenträger gelesen wurde. Außerdem wurde die Seite fehlerfrei vom Datenträger gelesen, da sie über einen Prüfsummenwert auf der Seite verfügt und kein Prüfsummenfehler aufgetreten ist (Meldung 824). Die Seite kann jedoch zu einem bestimmten Zeitpunkt nach dem Auftreten dieses Fehlers geändert und dann mit der falschen Änderung auf den Datenträger geschrieben werden. Wenn dieser Fehler auftritt, wird basierend auf allen Änderungen eine neue Prüfsumme berechnet, bevor sie auf den Datenträger geschrieben wird. Deshalb kann die Seite zwar auf dem Datenträger beschädigt worden sein, aber ein anschließender Lesevorgang vom Datenträger löst möglicherweise keinen Prüfsummenfehler aus. Es ist wichtig, DBCC CHECKDB für jede Datenbank auszuführen, auf die dieser Fehler verweist.

Es ist möglich, dass auch der Befehl DBCC CHECKDB für eine Seite in diesem Zustand keinen Fehler meldet, nachdem dieser auf den Datenträger geschrieben wurde. Der Grund hierfür ist, dass sich die falsche Änderung an Stellen auf der Seite befinden kann, die weder Daten noch wichtige Informationen zur Seiten- oder Zeilenstruktur enthalten. Alternativ kann es sich auch um Änderungen an Daten handelt, die CHECKDB nicht erkennen kann.

Weitere Details und Informationen zur Meldung 832 finden Sie im Whitepaper E/A-Grundlagen für SQL Server, Kapitel 2.