FIX: Foutbericht 605 en voegt fout 824 tijdens het uitvoeren van een query die de gegevens in een tijdelijke tabel in SQL Server

Van toepassing: Microsoft SQL Server 2008 Service Pack 3

BUG: #50003826 (SQL-Hotfix)
Microsoft distribueert oplossingen voor Microsoft SQL Server 2008 als één downloadbaar bestand. Aangezien de oplossingen cumulatief zijn, bevat elke nieuwe release alle hotfixes en alle beveiligingscorrecties die waren opgenomen in de voorgaande SQL Server 2008 releases.

Symptomen


In SQL Server 2008, moet u een query die gegevens in een tijdelijke tabel invoegen uitvoeren. De insert-instructie bevat een subquery die verwijst naar de tijdelijke tabel. Wanneer u de query uitvoert, wordt een foutbericht van de volgende strekking weergegeven:
Msg 605, 21, niveau, stand 3, regel-1Attempt voor het ophalen van logische pagina (1:225) in 2-database is mislukt. Hoort deze bij toewijzing eenheid 281474980315136 niet te 504403158513025024.
Als u de query opnieuw uitvoert, wordt een foutbericht van de volgende strekking:
Msg 824, 24, staat 2, regel 1 niveau
SQL Server een logische samenhang gebaseerde i/o-fouten gedetecteerd: onjuiste controlesom (verwacht: 0x50758180; Werkelijke: 0x15658bfc). Het is opgetreden tijdens het lezen van de pagina (1:336) in de database-ID 2 op offset 0x000000002a0000 in het bestand ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Meer berichten in de SQL-Server logboek- of gebeurtenis foutenlogboek kunnen nader bepalen. Dit is een ernstige fout die dreigt de integriteit van de database en moet onmiddellijk worden gecorrigeerd. Voer een consistentiecontrole volledige database (DBCC CHECKDB). Deze fout kan worden veroorzaakt door meerdere factoren; Zie SQL Server Books Online voor meer informatie.
In sommige gevallen ook verschijnt een foutbericht met de volgende strekking weergegeven:
Msg 601, niveau 12, 3 staat, Procedure procedure naam, nummerscannen met NOLOCK door verplaatsing van gegevens kan niet worden voortgezet.
Een mogelijke query constructie die deze fouten kan opleveren, is als volgt:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3 

Oplossing


De correctie voor dit probleem werd voor het eerst uitgebracht in de cumulatieve Update 3. Voor meer informatie over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2008, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
960484 Cumulatieve updatepakket 3 voor SQL Server 2008
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en de beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2008 zijn release opgelost. We raden het toepassen van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
956909 De SQL Server 2008 bouwt die zijn uitgebracht nadat SQL Server 2008 werd uitgebracht.
Nadat u deze cumulatieve updatepakket hebt geïnstalleerd, hebt u traceringsvlag 4135 inschakelen. Hiervoor kunt u toevoegen de -T4135 opstartparameter. Of u kunt de instructie dbcc traceon(4135) voor een bepaalde sessie.

Workaround


U kunt dit probleem omzeilen, kunt u een kolom met zowel een geclusterde primaire sleutel en een eigenschap aan de tijdelijke tabel toevoegen. Bijvoorbeeld de volgende instructie wijzigt de tijdelijke tabel uitvoeren:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Status


Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie


Hoewel u ontvangt een foutmelding 824 of 605, de database is niet beschadigd. Deze foutberichten verwijst ook naar pagina's uit de database tempdb.Klik op het volgende artikelnummer voor meer informatie over welke bestanden worden gewijzigd, en voor informatie over de vereisten voor het toepassen van het cumulatieve updatepakket met de hotfix die wordt beschreven in dit Microsoft Knowledge Base-artikel, de artikel in de Microsoft Knowledge Base:
960484 Cumulatieve updatepakket 3 voor SQL Server 2008

SQL Server 2008 R2 BPA-informatie

De SQL Server 2008 R2 Best Practices Analyzer (SQL Server 2008 R2 BPA) bevat een regel voor het detecteren van gevallen waarin er geen cumulatieve update of de traceringsvlag ingeschakeld om dit probleem te verhelpen. SQL Server 2008 R2 BPA ondersteunt zowel SQL Server 2008 en SQL Server 2008 R2. Als u het hulpprogramma BPA en optreden van een "Database-Engine - tempdb fouten corrigeren of ontbrekende vlag aanwijzen' Waarschuwing: u moet controleren van de versie van SQL Server en de vlaggen traceren die zijn geconfigureerd voor het inschakelen van deze correctie is opgenomen.

Verwijzingen

Regel softwareTitel van de regelRegel-id
SQL Server 2008 R2 BPA-regelTempDB fouten herstellen of ontbrekende vlag tracerenRID3808
Opmerking U kunt traceringsvlag 4135 of traceringsvlag 4199 deze correctie inschakelen inschakelen. Traceringsvlag 4135 werd geïntroduceerd in cumulatieve updatepakket 3 voor SQL Server 2008. Traceringsvlag 4135 is ook beschikbaar in SQL Server 2008 Service Pack 1, Service Pack 2 voor SQL Server 2008 en SQL Server 2008 R2. Traceringsvlag 4199 werd geïntroduceerd in cumulatieve updatepakket 7 voor SQL Server 2008, cumulatieve updatepakket 7 voor SQL Server 2008 Service Pack 1 en cumulatieve updatepakket 1 voor SQL Server 2008 R2. Voor meer informatie over traceringsvlag 4199, klikt u op het volgende artikel in de Microsoft Knowledge Base:
 974006 Traceringsvlag 4199 wordt toegevoegd aan een besturingselement meerdere query optimizer eerder wijzigingen aanbrengen onder meerdere trace vlaggen
Omdat de oplossing voor dit probleem betrekking heeft op een combinatie van een specifieke hotfix build en een traceringsvlag de correctie inschakelen, zijn inbegrepen in de volgende tabel om de verschillende scenario's en de aanbevolen actie u moet ondernemen voor elk scenario weer te geven.Voor meer informatie over de meest recente versies van SQL Server klikt u op het volgende artikel in de Microsoft Knowledge Base:
957826 Waar vind ik informatie over de nieuwste SQL Server maakt

Verwijzingen


Voor meer informatie over de lijst van de versies die beschikbaar na de release van SQL Server 2008 zijn, klikt u op het volgende artikel in de Microsoft Knowledge Base:
956909 De SQL Server 2008 bouwt die zijn uitgebracht nadat SQL Server 2008 werd uitgebracht.
Voor meer informatie over de incrementele Servicing-Model voor SQL Server, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
935897 Een incrementele Servicing-Model is beschikbaar in de SQL Server-team voor het leveren van hotfixes voor gemelde problemen
Voor meer informatie over het naamgevingsschema voor SQL Server-updates klikt u op het volgende artikel in de Microsoft Knowledge Base:
822499Nieuw naamgevingsschema voor software-updatepakketten voor Microsoft SQL Server
Voor meer informatie over terminologie voor software-updates klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
824684 Beschrijving van de standaardterminologie die wordt gebruikt voor het beschrijven van Microsoft-software-updates