SQL Server-Diagnose hinzugefügt, um nicht berichtete e/a-Probleme aufgrund veralteter Lese- bzw. Schreibvorgänge verloren

Problembeschreibung

Betriebssystem, Treiber oder Hardware verloren Probleme verursacht oder veraltete lesen Bedingungen schreiben, sehen Sie Daten Integrität-bezogene Fehlermeldungen wie beispielsweise Fehler 605, 823, 3448, 3456. Sie erhalten Fehlermeldungen, die in den folgenden Beispielen ähneln:

2003-07-24 16:43:04.57 spid63 Getpage: Bstat = 0 x 9, Sstat = 0 x 800 Cache
2003-07-24 16:43:04.57 spid63 Pageno ist/sollte sein: Objid ist/sollte sein:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424

2003-07-24 16:43:04.57 spid63... IAM gibt an, dass die Seite diesem Objekt zugewiesen ist

2003-07-24 16:52:37.67 spid63 Fehler: 605, Schweregrad: 21, Status: 1
2003-07-24 16:52:37.67 spid63 versucht, die logische Seite (1:7040966) in der Datenbank "Pubs" Objekt 'Authors' nicht auf 'Titles'-Objekt gehört.

2003-07-24 16:52:40.99 spid63 Fehler: 3448, Schweregrad: 21, Status: 1
2003-07-24 16:52:40.99 spid63 konnte Datensatz (63361:16876:181) für die Transaktions-ID (0: 159696956) auf Seite (1: 7040977) Datenbank "Pubs" (Datenbank-ID 12) nicht rückgängig machen. Seiteninformation: LSN = (63192:958360:10), Typ = 2. Informationen: OpCode = 2, Kontext 1...

2003-07-09 14:31:35.92 spid66 Fehler: 823, Schweregrad: 24, Status: 2
2003-07-09 14:31:35.92 spid66 e/a-Fehler (falsche Seiten-ID) während Lesevorgang bei Offset 0 x 00000016774000 in Datei 'h:\sql\MSSQL\data\tempdb.mdf'.

2010-02-06 15:57:24.14 spid17s Fehler: 3456, Schweregrad: 21, Status: 1.
2010-02-06-15:57:24.14-spid17s konnte nicht Protokolldatensatz (58997:5252:28) für die Transaktions-ID (0:109000187) auf Seite (1:480946) Datenbank "Meine Datenbank" (Datenbank-ID 17) wiederholen. Seite: LSN = (58997:5234:17), Typ = 3. Protokoll: OpCode = 2, Kontext 5 PrevPageLSN: (58997:5243:17). Wiederherstellen aus einer Sicherungskopie der Datenbank, oder reparieren Sie die Datenbank.

Weitere Informationen

Microsoft führte erweiterte Nachverfolgungsfunktionen mit SQL Server 2000 Service Pack 4 und diese Diagnose Teil des Produkts in SQL Server 2005 und höher. Diese Funktionen dienen zum Auffinden von i/o externer Probleme und die Fehlermeldungen beschrieben im Abschnitt "Symptome"

Wenn einer der im Abschnitt "Symptome" aufgeführten Fehlermeldungen kann nicht durch ein Ereignis wie ein physisches Laufwerkfehler erklärt werden, überprüfen Sie alle bekannten Probleme mit SQL Server, das Betriebssystem, die Treiber und die Hardware. Die Diagnose versuchen über zwei folgende Informationen:
  • Verlorene schreiben: Ein erfolgreicher Aufruf WriteFile -API jedoch Betriebssystem, ein Treiber oder der Cache-Controller ist nicht richtig Daten auf physischen Medien entleert, obwohl SQL Server informiert wird, dass der Schreibvorgang erfolgreich war.
  • Veraltetes Lesen: Ein erfolgreicher Aufruf der ReadFile -API jedoch das Betriebssystem, Treiber oder der Cache-Controller gibt fälschlicherweise eine ältere Version der Daten.
Beispielsweise hat Microsoft bestätigt, dass Szenarios WriteFile -API-Aufruf erfolgreich zurückgegeben, wobei ein gibt eine sofortige erfolgreiche Lesen des gleichen Datenblock ältere Daten, einschließlich Daten, die wahrscheinlich in einem Cache zum Lesen von Hardware gespeichert sind. Dieses Problem tritt manchmal aufgrund eines Problems Lese-Cache. In anderen Fällen ist die Schreibdaten niemals auf den physischen Datenträger geschrieben.

Um zusätzliche Diagnose für diese Art von Problemen zu aktivieren, hat SQL Server das Ablaufverfolgungsflag 818. Sie können Ablaufverfolgungsflag 818 als Startparameter,-T818, für den Computer mit SQL Server, oder Sie können die folgende Anweisung ausführen:
DBCC TRACEON(818, -1)

Das Ablaufverfolgungsflag 818 ermöglicht ein Ringpuffer im Arbeitsspeicher, die für die Überwachung verwendet wird, der die letzte erfolgreiche 2.048 Schreibvorgänge, die von dem Computer mit SQL Server, einschließlich nicht sortieren und Arbeitsdatei OS ausgeführt werden. Wenn Fehler wie beispielsweise Fehler 605, 823 oder 3448 auftreten, wird LSN (Number) des eingehenden Puffers Protokoll Sequenzwert mit der aktuellen Schreibliste verglichen. Die LSN, die während des Lesevorgangs abgerufen älter als während des Schreibvorgangs angegeben ist, wird eine neue Fehlermeldung in das SQL Server-Fehlerprotokoll protokolliert. Die meisten SQL Server-Schreibvorgänge treten als Prüfpunkte oder als lazy Writes. Lazy Write ist eine Hintergrundaufgabe, die asynchrone e/a verwendet. Die Implementierung des Ringpuffers ist leicht, wodurch die Leistung des Systems geringfügig auswirken.

Die Meldung gibt an, dass SQL Server vom Aufruf der WriteFile -API oder der ReadFile -API-Aufruf nicht Fehler erhalten haben. Wenn die LSN überprüft wurde, war der Wert nicht korrekt:

SQL Server hat ein OS-/Hardwareebene Lese- oder Schreibproblem auf Seite (1: 75007) in Datenbank 12 festgestellt

Zurückgegebene LSN (63361:16876:181), erwartete LSN (63361:16876:500)

Wenden Sie sich an den Hardwarehersteller und deaktivieren Sie Cachemechanismus zum Beheben des Problems

Ab SQL Server 2005 wird die Fehlermeldung gemeldet:

SQL Server logischen Konsistenz-basierte e/a-Fehler festgestellt: Lesen veralteter Daten. Es wird ein << Schreib-/>> Seite << PAGEID >> in Datenbank-ID << DBID >> bei Offset << physischen OFFSET >> in Datei << Dateiname >> aufgetreten. Weitere Nachrichten im SQL Server-Fehler protokollieren oder System-Ereignisprotokoll können mehr Details. Dies ist ein schwerwiegender fehlerbedingung, die Datenbankintegrität bedroht und sofort behoben werden muss. Führen Sie eine vollständige Überprüfung der Konsistenz (DBCC CHECKDB). Dieser Fehler kann durch viele Faktoren verursacht werden; Weitere Informationen finden Sie in der SQL Server-Onlinedokumentation.

Zu diesem Zeitpunkt enthält der Lesecache eine ältere Version der Seite, oder die Daten nicht korrekt auf den physischen Datenträger geschrieben wurde. In beiden Fällen (Schreibverlust oder Lesen veralteter Daten) berichtet SQL Server ein externes Problem mit Betriebssystem, die Treiber oder den Hardwareebenen.

Wenn Fehler 3448 beim Rollback einer Transaktion, die Fehler 605 Fehler 823 durchzuführen tritt oder, der Computer mit SQL Server automatisch schließt die Datenbank und versucht, öffnen und die Datenbank wiederherzustellen. Die erste Seite, die Fehler 605 oder Fehler 823 auftritt, gilt eine fehlerhafte Seite und die Seiten-Id werden von dem Computer mit SQL Server. Während der Wiederherstellung (vor der Wiederherstellungsphase) liest die falsche Seiten-Id werden die primären Details zum Header Seite im SQL Server-Fehlerprotokoll protokolliert. Diese Aktion ist wichtig, da dadurch verloren schreiben und Lesen veralteter Daten Szenarios unterscheiden.

Die folgenden üblichen Verhaltensweisen Lesen veralteter Daten Szenarien auftreten:
Im vorherigen Absatz erwähnten Verhaltensweisen zeigen ein Problem und werden häufig durch Deaktivieren des gelöst. In der Regel im vorherigen Absatz beschriebenen Aktionen Erzwingen einer sicherstellen und erfolgreichen Lesevorgänge, die zeigt, dass das physische Medium einwandfrei aktualisiert. Der Schreibverlust tritt auf, wenn die Seite, die gelesen wird weiterhin die ältere Version der Daten auch nach eine erzwungene Leerung des Cachemechanismus.

Manchmal möglicherweise das Problem nicht mit einem Hardwarecache zugeschnitten. Es möglicherweise ein Problem mit einem Filtertreiber vor. Überprüfen Sie in solchen Fällen Ihre Software, einschließlich der Sicherungsprogramme und antivirus-Software, und prüfen Sie, ob Probleme mit dem Filtertreiber vorliegen.

Microsoft hat auch Zustände festgestellt, die nicht die Kriterien für Fehler 605 oder Fehler 823 aber derselben Aktivität Lesen veralteter Daten oder Schreibverlust zurückzuführen. In einigen Fällen scheint eine Seite zweimal aktualisiert werden, aber mit dem gleichen LSN-Wert. Dieses Verhalten kann auftreten, wenn die Objekt-ID und die Seiten-ID korrekt sind (die Seite dem Objekt bereits zugeordnet), und eine Änderung an der Seite vorgenommene und auf den Datenträger geleert. Nächste Seite abrufen ein älteres Bild zurückgegeben, und anschließend erfolgt eine zweite Änderung. Das SQL Server-Transaktionsprotokoll zeigt, dass die Seite zweimal mit dem gleichen LSN-Wert aktualisiert wurde. Dadurch wird ein Problem, wenn Sie versuchen, eine Sequenz eines Transaktionsprotokolls wiederherzustellen oder Problemen mit der Datenkonsistenz, wie Fehler in Fremdschlüsseln oder fehlende Dateneinträge. Die folgende Fehlermeldung ist ein Beispiel für diese Bedingung:

Fehler: 3456, Schweregrad: 21, Status: 1 Datensatz (276666:1664:19) für die Transaktions-ID (0: 825853240) auf Seite (1: 1787100), 'Authors' (7) Datenbank nicht wiederherstellen konnte. Seite: LSN = (276658:4501:9), Typ = 1. Protokoll: OpCode = 4, Kontext 2, PrevPageLSN: (275565:3959:31)...

Einige Szenarien werden in der folgenden Liste ausführlicher beschrieben:
  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Table created or truncated
    4Inserts (Pages allocated)
    5Newly allocated page written to disk by Lazy Writer
    6Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7Rollback of transaction initiated

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Page Modification
    4Page written to disk by Lazy Writer
    5Page read in for another modification (stale image returned)
    6Page Modified for a second time but because of stale image does not see first modification
    7Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page

SQL Server'sortiert' Operatoren führen e/a-Aktivitäten, in erster Linie die Tempdb -Datenbank. Diese e/a-Vorgänge sind Ausgabeoperationen Puffer ähnelt. Allerdings wurden sie bereits so lesen Wiederholungslogik verwenden, um ähnliche Probleme zu beheben. In diesem Artikel beschriebene zusätzliche Diagnose gelten nicht für diese e/a-Vorgänge.

Microsoft hat festgestellt, dass die Hauptursache der folgenden Art lesen Fehler ist im Allgemeinen Lesen veralteter Daten oder Schreibverlust:

2003-04-01 20:13:31.38 spid122 SQL Server Assertion: Datei: < p:\sql\ntdbms\storeng\drs\include\record.inl > Zeile = 1447 Fehler Assertion = "M_SizeRec > 0 & & M_SizeRec < = MAXDATAROW".

2003-03-29 09:51:41.12 Lesefehler spid57 sortieren (falsche Seiten-ID). PageID = (0x1:0x13e9), Dbid = 2, Datei = e:\program c:\Programme\Microsoft SQL Server\mssql\data\tempdb.mdf. Wiederholen.

2003-03-29 09:51:41.13 spid57 Fehler: 823, Schweregrad: 24, Status: 7
2003-03-29 09:51:41.13 spid57 e/a-Fehler (falsche Seiten-ID) während Lesevorgang bei Offset 0x000000027d2000 in Datei 'e:\program c:\Programme\Microsoft SQL Server\mssql\data\tempdb.mdf' festgestellt.

* 00931097 Module(sqlservr+00531097) (Utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* 00852520 Modul(sqlservr+00452520) (Mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

Kunden, die diese Art Fehler aufgetreten haben häufig Probleme Tempdb auf ein lokales Laufwerk ohne Cache verschoben oder den Lesecachemechanismus gelöst.

Denn Lesen veralteter Daten oder verlorene schreiben im Datenspeicher, der nicht erwartet wird, kann eine Vielzahl von Verhaltensweisen auftreten. Möglicherweise fehlende Daten angezeigt, aber einige der häufigeren Effekte fehlen Daten als Index Korruption Fehler 644 oder 625 Fehler angezeigt:

Fehler 644 Schweregrad auf 21 Nachricht Text nicht gefunden Indexeintrag für die RID ' % * hs' in der Indexseite % S_PGID, Index-ID %d-Datenbank ' %. * ls'.

Fehler 625 Schweregrad 21 Meldungstext kann nicht Zeile aus Seite %S_PGID nicht über die RID abgerufen werden, da die Slot-ID (%d) ungültig ist.

Einige Kunden haben berichtet Zeilen fehlen, nachdem sie zählen Zeilen ausgeführt. Dieses Problem tritt aufgrund einer verlorenen schreiben. Vielleicht sollte die Seite mit gruppierten Indexseitenkette verknüpft werden. Wenn das Schreiben physisch verloren gegangen ist, steht die Daten verloren.

Wichtig Eine der Verhaltensweisen, oder wenn Sie ähnliche Probleme mit der Deaktivierung des Cachemechanismus sind, Microsoft dringend, die empfiehlt erhalten Sie des neuesten Updates für SQL Server und die aktuellsten SQL Server e/a-Stress Simulator. Microsoft empfiehlt auch, eine strenge Überprüfung des Betriebssystems und die zugeordneten Konfigurationen durchzuführen.

Hinweis Microsoft hat bestätigt, dass unter seltenen und schweren e/a-Lasten einige Hardwareplattformen Lesen veralteter Daten zurückgeben können. Erweiterten Diagnose möglich veraltete angeben Lese-/verloren Bedingung Hersteller Ihrer Hardware für sofortige folgen und Testen Sie mit dem Dienstprogramm SQLIOSim .

SQL Server erfordert die Zustellung stabile Medien unterstützen gemäß SQL Server i/o-Zuverlässigkeitsanforderungen. Weitere Informationen zu den Eingabe- und Ausgabeparameter für die SQL Server-Datenbank-Engine finden Sie unter Microsoft SQL Server Datenbank Engine Input/Output Requirements.
Eigenschaften

Artikelnummer: 826433 – Letzte Überarbeitung: 16.01.2017 – Revision: 2

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2005 Compact Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Analysis Services, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Express with Advanced Services, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Standard Edition for Small Business, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, SQL Server 2014 Reporting Services

Feedback