Freigeben über


MSSQLSERVER_856

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 856
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name BAD_MEMORY_CLEAN_DATABASE_PAGE
Meldungstext SQL Server hat Hardwarespeicherbeschädigungen in der Datenbank '%ls', Datei-ID: %u, Seiten-ID erkannt; %u, Speicheradresse: 0x%I64x und hat die Seite erfolgreich wiederhergestellt.

Erklärung

Diese Meldung gibt an, dass SQL Server eine ungültige Speicherseite in einem zwischengespeicherten Objekt außerhalb des Pufferpools erkannt hat. Diese Meldung wird für Systeme ausgelöst, die die Wiederherstellung nach Arbeitsspeicherfehlern unterstützen. SQL Server korrigiert diese Speicherfehler, indem die beschädigten Speicherseiten verworfen werden, die nicht geändert werden, und diese Fehlermeldung protokolliert. Wenn die beschädigte Arbeitsspeicherseite geändert (modifiziert) wurde, wird der Fehler 824 ausgelöst (MSSQLSERVER_824).

Aktion des Benutzers

Sie sollten Hardware- oder Systemprüfungen durchführen, um zu ermitteln, ob ein Problem mit dem Arbeitsspeicher oder der CPU besteht. 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. Wenn dieser Fehler angezeigt wird, sollten Sie DBCC CHECKDB für alle Datenbanken in dieser Instanz ausführen.

Weitere Informationen

Auf Computern mit neuerer Hardware, auf denen Windows Server 2012 oder eine höhere Version ausgeführt wird, kann die Hardware das Betriebssystem und die Anwendungen darüber benachrichtigen, dass Arbeitsspeicherseiten (Betriebssystemseiten) als „fehlerhaft“ oder „beschädigt“ gekennzeichnet sind. Anwendungen wie SQL Server können diese Benachrichtigungen über ungültige Speicherseiten mithilfe des folgenden API-Satzes registrieren:

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

SQL Server bietet Unterstützung für diese Benachrichtigungen in Microsoft SQL Server 2012 (11.x) und höheren Versionen. Beim Starten von SQL Server überprüft SQL Server, ob die Hardware dieses neue Feature unterstützt. Außerdem wird Ihnen im Fehlerprotokoll die folgende Meldung angezeigt:

<Der Datetime> Server-Computer unterstützt die Wiederherstellung von Speicherfehlern. Der SQL-Arbeitsspeicherschutz ist aktiviert, um die Wiederherstellung nach einer Arbeitsspeicherbeschädigung zu ermöglichen.

Derzeit führt nur der Pufferpool Aktionen aus, wenn SQL Server diese Benachrichtigungen empfängt. Wenn sie eine Benachrichtigung empfängt, muss SQL Server den gesamten Pufferpool durchlaufen und die Adresse für jeden zugeordneten Puffer ermitteln. Anschließend verwendet SQL Server die QueryWorkingSetEX API, um zu überprüfen, ob eine der Speicherseiten, die die Datenseite zurückgibt, als ungültig gekennzeichnet ist. Die fehlerhaften Member der Ausgabestruktur PSAPI_WORKING_SET_EX_BLOCK, die dieser Arbeitsspeicherseite zugeordnet werden kann, werden auf 1 festgelegt, wenn ein Schaden gemeldet wird.

Wenn dieser Pufferpool oder diese Datenseite derzeit nicht geändert wird oder keine E/A-Verarbeitung erfolgt, kann SQL Server die Datenseite verwerfen und aufheben. Anschließend protokolliert SQL Server die folgende Meldung:

SQL Server hat Hardwarespeicherbeschädigungen in der Datenbank '%ls', Datei-ID: %u, Seiten-ID erkannt; %u, Speicheradresse: 0x%I64x und hat die Seite erfolgreich wiederhergestellt.

Wenn diese Datenseite nochmals für Abfragen benötigt wird, kann der Pufferpool die Datenseite wieder vom Datenträger lesen und die Inhalte wieder an den Pufferpool übertragen. Außerdem kann sich die auf dem Datenträger gespeicherte Version der Seite in einem beschädigten Zustand befinden. In diesem Fall protokolliert SQL Server möglicherweise zusätzliche Fehler, z. B. Fehler 824.

Wenn die ungültige Seite nicht vom Pufferpool, sondern von einem anderen zwischengespeicherten Objekt oder einer anderen Struktur verwendet wird, protokolliert SQL Server die folgende Meldung:

Es wurde eine nicht behebbare Beschädigung des Hardwarespeichers festgestellt. Your system may become unstable. Weitere Informationen finden Sie im Windows-Ereignisprotokoll.

Wenn der Server Speicherfehler meldet, wenden Sie sich an den Hersteller der Computerhardware, und ergreifen Sie angemessene Maßnahmen. Sie können beispielsweise eine Arbeitsspeicherdiagnose durchführen, das BIOS und die Firmware aktualisieren sowie fehlerhafte Arbeitsspeichermodule ersetzen.

Sie können das SQL Server-Ablaufverfolgungskennzeichnung 849 verwenden, damit SQL Server nicht beim Betriebssystem für Speicherfehlerbenachrichtigungen registriert wird. Beachten Sie jedoch, dass das Aktivieren des Ablaufverfolgungskennzeichnungs 849 verhindert, dass SQL Server fehlerhafte Speicherbenachrichtigungen vom Betriebssystem empfängt. Daher wird empfohlen, dieses Ablaufverfolgungsflag im Normalfall nicht zu verwenden.

Beachten Sie außerdem, dass SQL Server standardmäßig diese Benachrichtigungen auf unterstützter Hardware empfängt.

Beachten Sie auch, dass beim Registrieren von SQL Server für diese Speicherfehlerbenachrichtigungen der fehlerhafte Systemprozess keine konstanten Seitenüberprüfungen durchführt. Weitere Informationen zu Überprüfungen von konstanten Seiten finden Sie unter Behandeln von Meldung 832 (konstante Seite hat sich geändert) in SQL Server.