MSSQLSERVER_855
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 855 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | BAD_MEMORY_OUTSIDE_BPOOL |
Meldungstext | Es wurde eine nicht behebbare Beschädigung des Hardwarespeichers festgestellt. Your system may become unstable. Check the Windows event log for more details (Es wurde eine nicht behebbare Beschädigung des Hardwarespeichers festgestellt. Das System kann instabil werden. Weitere Informationen finden Sie im Windows-Ereignisprotokoll.) |
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 kann aus diesen Szenarien nicht wiederhergestellt werden und protokolliert diese Meldung.
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.