Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft bei der Problembehandlung bei der Fehlermeldung "Ereignis-ID 50".
Problembeschreibung
Wenn Windows Informationen auf den physischen Datenträger schreibt, werden möglicherweise die folgenden Ereignismeldungen im Systemprotokoll protokolliert:
Ereignis-ID: 50
Ereignistyp: Warnung
Ereignisquelle: Ftdisk
Beschreibung: {Lost Delayed-Write Data} Das System hat versucht, Dateidaten aus Puffern in \Device\HarddiskVolume4 zu übertragen. Fehler beim Schreibvorgang, und nur einige der Daten wurden möglicherweise in die Datei geschrieben.
Daten:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Ereignis-ID: 26
Ereignistyp: Informationen
Ereignisquelle: Anwendungspopup
Beschreibung: Windows - Fehler beim verzögerten Schreiben: Windows konnte nicht alle Daten für die Datei \Device\HarddiskVolume4\Programme\Microsoft SQL Server\MSSQL$INSTANCETWO\LOG\ERRORLOG speichern. Die Daten sind verloren gegangen. Dieser Fehler kann durch einen Fehler ihrer Computerhardware oder Netzwerkverbindung verursacht werden.Versuchen Sie, diese Datei an anderer Stelle zu speichern.
Diese Ereignismeldungen bedeuten genau dasselbe und werden aus denselben Gründen generiert. Dieser Artikel konzentriert sich auf die Ereignis-ID 50.
Notiz
Das Gerät und der Pfad in der Beschreibung und die spezifischen Hexadezimaldaten in diesen Nachrichten variieren je nach genauen Umständen, die das Ereignis verursacht haben.
Weitere Informationen
Es gibt mehrere verschiedene Quellen für eine Ereignis-ID 50-Meldung. Eine Ereignis-ID 50-Nachricht, die von einer MRxSmb-Quelle protokolliert wird, tritt beispielsweise auf, wenn ein Netzwerkkonnektivitätsproblem vorliegt, das den Umleitungsmodul umfasst. In diesem Artikel werden Ereignis-ID 50-Nachrichten behandelt, die auf Datenträgerschreibprobleme verweisen. Überprüfen Sie die Ereignis-ID 50-Nachricht, um zu überprüfen, ob es sich auf ein Datenträgerschreibproblem bezieht und dass dieser Artikel gilt.
In diesem Zusammenhang protokolliert Windows eine Ereignis-ID 50-Meldung, wenn ein allgemeiner Fehler auftritt, wenn Windows versucht, Informationen aus dem Dateisystemcache-Manager (nicht vom Cache auf Hardwareebene) auf den physischen Datenträger zu schreiben. Dieses Schreibverhalten, das als Schreibrückschreiben oder verzögertes Zwischenspeichern bezeichnet wird, ist Teil der Speicherverwaltungsfunktion von Windows. Das Zurückschreiben der Zwischenspeicherung verbessert die Systemleistung. Fehler bei verzögerten Schreibvorgängen können jedoch zu Einem Verlust von Daten oder Volumeintegrität führen.
Wenn eine Anwendung in der Regel eine Schreibanforderung an Windows sendet, speichert Cache-Manager die Schreibanforderung und Berichte an die Anwendung, die erfolgreich war. Später schreibt der Cache-Manager die Daten auf den physischen Datenträger und löscht dann den Cache. Wenn während des Schreibvorgangs ein Fehler auftritt, gehen die Daten verloren, wenn der Cache-Manager den Cache löscht.
Anwendungen oder Prozesse, die nicht kritische Daten schreiben, z. B. Protokollierungsprozesse, verwenden Cache-Manager, um die Gesamtleistung zu verbessern. Anwendungen, die wichtige Daten schreiben, z. B. SQL Server, verwenden keinen Cache-Manager. Solche Anwendungen legen ein FILE_FLAG_NO_BUFFERING
Kennzeichen fest, um sicherzustellen, dass die Transaktion direkt auf dem Datenträger abgeschlossen ist. Schreibvorgänge mit Direct-to-Disk generieren niemals Ereignis-ID 50 Nachrichten.
Eine Ereignis-ID 50-Nachricht ähnelt einer Ereignis-ID 9 oder einer Ereignis-ID 11-Nachricht. Obwohl der Fehler nicht so schwerwiegend ist wie der Fehler, der durch die Ereignis-ID 9 oder ereignis-ID 11-Nachricht angegeben wird, können Sie dieselben Problembehandlungstechniken für eine Ereignis-ID 50-Nachricht wie für eine Ereignis-ID 9 und eine Ereignis-ID 11-Nachricht verwenden. Denken Sie jedoch daran, dass alles, was sich im Stapel befindet, zu Verlustverzögerungen führen kann, z. B. Filtertreiber und Miniporttreiber.
Decodieren des Beispielereignisses
Der Abschnitt "Symptome " in diesem Artikel enthält das folgende Beispiel für eine Ereignis-ID 50-Nachricht:
Ereignis-ID: 50
Ereignistyp: Warnung
Ereignisquelle: Ftdisk
Beschreibung: {Lost Delayed-Write Data} Das System hat versucht, Dateidaten aus Puffern in \Device\HarddiskVolume4 zu übertragen. Fehler beim Schreibvorgang, und nur einige der Daten wurden möglicherweise in die Datei geschrieben.
Daten:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Identifizieren des Zieldatenträgers
Sie können den Datenträger identifizieren, der das Ziel des Schreibvorgangs war, indem Sie den symbolischen Link verwenden, der für das Laufwerk im Abschnitt "Beschreibung" der Ereignis-ID-Nachricht aufgeführt ist, z. B.: \Device\HarddiskVolume4.
Decodieren des Datenabschnitts
Ereignis-ID 50 Nachrichten (und auch Ereignis-ID 9, 11, 51 oder ähnliche "DISK"-Nachrichten) enthalten Binärdaten, mit denen Sie das Problem identifizieren können. Die Nachricht enthält den folgenden Datenabschnitt:
Daten:
0000: 00 00 04 00 02 00 56 00
0008: 00 00 00 00 32 00 04 80
0010: 00 00 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00
0028: 11 00 00 80
Notiz
Wenn Sie die Hexadezimaldaten in der Ereignis-ID-Nachricht in den Statuscode konvertieren, denken Sie daran, dass die Werte im little-endian-Format dargestellt werden.
In der folgenden Tabelle wird beschrieben, was jeder Offset dieser Nachricht darstellt.
OffsetLengthValues | Länge | Werte |
---|---|---|
0x00 | 2 | Nicht verwendet |
0x02 | 2 | Größe der Speicherabbilddaten = 0x0004 |
0x04 | 2 | Anzahl von Zeichenfolgen = 0x0002 |
0x06 | 2 | Offset zu den Zeichenfolgen |
0x08 | 2 | Ereigniskategorie |
0x0c | 4 | NTSTATUS-Fehlercode |
0x10 | 8 | Nicht verwendet |
0x18 | 8 | Nicht verwendet |
0x20 | 8 | Nicht verwendet |
0x28 | 4 | NT-Statusfehlercode |
Der NT-Statusfehlercode
Der abschließende Statuscode ist die wichtigste Information in einer Ereignis-ID 50-Meldung. Dies ist der Fehlercode, der beim Erstellen der Schreibanforderung zurückgegeben wird, und es handelt sich um die Schlüsselquelle der Informationen. Im Beispiel wird der endgültige Statuscode bei 0x28 in der sechsten Zeile des Datasets aufgeführt. Beginnt mit "0028:" und enthält die vier Oktetts in dieser Zeile:
0028: 11 00 00 80
Wenn Sie die Hexadezimaldaten in der Ereignis-ID 50-Nachricht in den Statuscode konvertieren, denken Sie daran, dass die Werte im little-endian-Format dargestellt werden. Da es sich bei dem Statuscode um die einzigen Informationen handelt, die Sie interessieren, ist es möglicherweise einfacher, die Daten im WORDS-Format anstelle von BYTES anzuzeigen. Wenn Sie dies tun, sind die Bytes im richtigen Format, und die Daten können möglicherweise schnell interpretiert werden.
Um die Ansicht der Daten zu ändern, wählen Sie im Fenster "Ereigniseigenschaften" die Option "Wörter" aus. In der Datenwörteransicht liest der Datenabschnitt des Beispiels wie folgt vor:
() Bytes (.)
Words 0000: 00040000 00560002 00000000 80040032 0010: 00000000 00000000 00000000 00000000 0020: 00000000 00000000 80000011
In diesem Fall ist der endgültige Statuscode 0x80000011. Dieser Statuscode entspricht STATUS_DEVICE_BUSY
und impliziert, dass das Gerät aktuell ausgelastet ist. Dies war der Grund, warum der Schreibvorgang fehlgeschlagen ist.
Weitere Informationen zu NT-Statuscodes finden Sie unter Verwenden von NTSTATUS-Werten. Die Liste der Codes ist auch im Windows Software Developers Kit (SDK) im NTSTATUS verfügbar. H-Datei .
Der Ereigniskategoriecode
Im Beispiel wird der Ereigniskategoriecode (der Code, der der Ereignis-ID 50 zugeordnet ist) in der zweiten Zeile aufgeführt. Diese Zeile beginnt mit "0008:" und enthält die letzten 4 Byte der folgenden Zeile:
0008: 00 00 00 00 32 00 04 80
In diesem Fall ist der Fehlercode 0x80040032, was entspricht IO_LOST_DELAYED_WRITE
. Diese Informationen werden in der Ereignisbeschreibung als "Lost Delayed-Write Data" angezeigt.