Update: Fehler 605 und Fehler 824, wenn Sie eine Abfrage ausführen fügt Daten in eine temporäre Tabelle in SQL Server

Gilt für: Microsoft SQL Server 2008 Service Pack 3

Fehler: #50003826 (SQL Hotfix)
Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da die kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 geliefert wurden.

Problembeschreibung


In SQL Server 2008 führen Sie eine Abfrage, die Daten in eine temporäre Tabelle eingefügt. Die Insert-Anweisung enthält eine Unterabfrage, die dieselbe temporäre Tabelle verweist. Wenn Sie die Abfrage ausführen, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:
Msg 605, Ebene 21, Status 3 Zeile 1Attempt logische Seite (1:225) in Datenbank 2 abrufen konnte. Es gehört zu Zuweisung Einheit 281474980315136 nicht zu 504403158513025024.
Wenn Sie die Abfrage erneut ausführen, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:
Msg 824, Ebene 24, Status 2, Zeile 1
SQL Server logischen Konsistenz-basierte e/a-Fehler festgestellt: Falsche Prüfsumme (erwartet: 0x50758180; tatsächliche: 0x15658bfc). Es trat beim Lesen der Seite (1:336) in Datenbank-ID 2 bei Offset 0x000000002a0000 in Datei ' c:\Programme\Microsoft c:\Programme\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. 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.
In einigen Fällen erhalten Sie auch eine Fehlermeldung angezeigt, die der folgenden ähnelt:
Msg 601 auf 12 State 3, Prozedur procedu NamenZeilennummerScan mit NOLOCK durch Daten konnte nicht fortgesetzt.
Ein Konstrukt möglich Abfrage, die diese Fehler verursachen kann, lautet wie folgt:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

Lösung


Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 3 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket für SQL Server 2008 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
960484 Kumulatives Updatepaket 3 für SQL Server 2008
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Wir empfehlen Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
956909 Die SQL Server 2008 Versionen, die nach der Veröffentlichung von SQL Server 2008, veröffentlicht wurden.
Nach der Installation dieses kumulativen Updatepaket müssen Sie das Ablaufverfolgungsflag 4135 aktivieren. Hierzu können Sie die -T4135 Startparameter. Oder verwenden Sie die Dbcc traceon(4135) -Anweisung für eine bestimmte Sitzung.

Problemumgehung


Um dieses Problem zu umgehen, fügen Sie eine Spalte mit gruppierten Primärschlüssel und Identity-Eigenschaft in die temporäre Tabelle. Beispielsweise führen Sie die folgende Anweisung um die temporäre Tabelle zu ändern:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen


Obwohl Sie 824 oder 605 Fehlermeldung, die Datenbank ist nicht beschädigt. Außerdem verweisen diese Fehlermeldungen Seiten aus der Datenbank Tempdb.Weitere Dateien geändert werden, und Informationen zu Komponenten das kumulative Updatepaket anwenden, die den Hotfix enthalten, die im Microsoft Knowledge Base-Artikel beschrieben klicken Sie auf die folgende Artikelnummer zum Anzeigen der in der Microsoft Knowledge Base:
960484 Kumulatives Updatepaket 3 für SQL Server 2008

SQL Server 2008 R2 BPA-Informationen

SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) enthält eine Regel, um Situationen erkennen, in denen Sie nicht das kumulative Update oder das Ablaufverfolgungsflag aktiviert, um dieses Problem zu beheben haben. SQL Server 2008 R2 BPA unterstützt SQL Server 2008 und SQL Server 2008 R2. Wenn Sie das BPA-Tool ausführen und eine "Datenbank-Engine - Fehler beheben oder fehlende Ablaufverfolgungsflags Tempdb" Warnung: Sie müssen die Version von SQL Server und Ablaufverfolgungsflags konfiguriert sind, um dieses Update zu aktivieren.

Informationsquellen

RegelsoftwareRegeltitelKennung für die Regel
SQL Server 2008 R2 BPA-RegelTempdb Fehler beheben oder fehlende AblaufverfolgungsflagsRID3808
Hinweis Sie können Ablaufverfolgungsflags 4135 oder Ablaufverfolgungsflag 4199 dieses Update zu aktivieren. Das Ablaufverfolgungsflag 4135 wurde Kumulatives Updatepaket 3 für SQL Server 2008 eingeführt. Das Ablaufverfolgungsflag 4135 steht auch in SQL Server 2008 Service Pack 1 in SQL Server 2008 Service Pack 2 und SQL Server 2008 R2. Ablaufverfolgungsflag 4199 wurde in kumulative Updatepaket 7 für SQL Server 2008, kumulatives Updatepaket 7 für SQL Server 2008 Service Pack 1 und kumulatives Updatepaket 1 für SQL Server 2008 R2 eingeführt. Weitere Informationen zum Ablaufverfolgungsflag 4199 klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
 974006 Ablaufverfolgungsflag 4199 Steuerelement hinzugefügt mehrere Abfrage Optimizer zuvor unter mehrere Ablaufverfolgungsflags geändert
Denn die Lösung für dieses Problem aus einem bestimmten Hotfix-Build und ein Ablaufverfolgungsflag Update aktivieren, sind wir in der folgenden Tabelle die Szenarien und die empfohlene Aktion für jedes Szenario zu einschließlich.Weitere Informationen über die aktuelle SQL Server-Builds klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
957826 Informationen zu den neuesten SQL Server erstellt

Informationsquellen


Informationen zur Liste der Builds, die nach der Veröffentlichung von SQL Server 2008 verfügbar sind, klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
956909 Die SQL Server 2008 Versionen, die nach der Veröffentlichung von SQL Server 2008, veröffentlicht wurden.
Weitere Informationen zum inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
935897 erläutert wird Steht ein inkrementelles Dienstmodell vom SQL Server-Team zu Hotfixes für gemeldete Probleme
Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
822499Neues Benennungsschema für Softwareupdatepakete für Microsoft SQL Server
Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird