Fout: #50003826 (SQL-hotfix)
Microsoft distribueert Microsoft SQL Server 2008-oplossingen als één downloadbaar bestand. Omdat de oplossingen cumulatief zijn, bevat elke nieuwe release alle hotfixes en alle beveiligingspatches die aanwezig waren in de vorige release voor oplossingen voor SQL Server 2008.
Symptomen
In SQL Server 2008 voert u een query uit waarmee gegevens in een tijdelijke tabel worden ingevoegd. De instructie insert bevat een subquery die verwijst naar dezelfde tijdelijke tabel. Wanneer u de query uitvoert, wordt een foutbericht van de volgende strekking weergegeven:
Opmerking
Msg 605, Level 21, State 3, Line 1
Poging om logische pagina (1:225) op te halen in database 2 is mislukt. Het behoort tot toewijzingseenheid 281474980315136 niet tot 504403158513025024.
Als u de query opnieuw uitvoert, wordt een foutbericht van de volgende strekking weergegeven:
Opmerking
- Msg 824, Level 24, State 2, Line 1
- SQL Server een logische I/O-fout gedetecteerd op basis van consistentie: onjuiste controlesom (verwacht: 0x50758180; werkelijk: 0x15658bfc). Dit gebeurde tijdens het lezen van pagina (1:336) in database-id 2 bij offset 0x000000002a0000 in bestand 'C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Aanvullende berichten in het foutenlogboek van SQL Server of het systeemgebeurtenislogboek bieden mogelijk meer details. Dit is een ernstige fout die de integriteit van de database bedreigt. Deze moet onmiddellijk worden gecorrigeerd. Voer een volledige databaseconsistentiecontrole (DBCC CHECKDB) uit. Deze fout kan door vele factoren worden veroorzaakt; Zie SQL Server Books Online voor meer informatie.
In sommige gevallen kunt u ook een foutbericht van de volgende strekking ontvangen:
Opmerking
Msg 601, Level 12, State 3, Procedure procedure name, Line line number
Kan niet doorgaan met scannen met NOLOCK vanwege gegevensverplaatsing.
Dit is een mogelijke queryconstructie die deze fouten kan veroorzaken:
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3
Oplossing
De oplossing voor dit probleem is voor het eerst uitgebracht in cumulatieve update 3. Klik voor meer informatie over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2008 op het volgende artikelnummer in de Microsoft Knowledge Base:
960484 Cumulatief updatepakket 3 voor SQL Server 2008Opmerking Omdat de builds cumulatief zijn, bevat elke nieuwe fixversie alle hotfixes en alle beveiligingspatches die aanwezig waren bij de vorige SQL Server 2008-fixversie. Het is raadzaam om de meest recente fixversie toe te passen die deze hotfix bevat. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
956909 De SQL Server 2008-builds die zijn uitgebracht na de release van SQL Server 2008Nadat u dit cumulatieve updatepakket hebt geïnstalleerd, moet u traceringsvlag 4135 inschakelen. Hiervoor kunt u de opstartparameter -T4135 toevoegen. Of u kunt de instructie dbcc traceon(4135) gebruiken voor een specifieke sessie.
Tijdelijke oplossing
U kunt dit probleem omzeilen door aan de tijdelijke tabel een kolom met zowel een geclusterde primaire sleutel als een identiteitseigenschap toe te voegen. Voer bijvoorbeeld de volgende instructie uit als u de tijdelijke tabel wilt wijzigen:
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Status
Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in het gedeelte 'Van toepassing op'.
Meer informatie
Hoewel u foutbericht 824 of 605 ziet, raakt de database niet beschadigd. Deze foutmeldingen verwijzen ook naar pagina's van de tempdb-database.
Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over welke bestanden er zijn gewijzigd en voor informatie over eventuele vereisten voor toepassing van het cumulatieve updatepakket met de hotfix die in dit Microsoft Knowledge Base-artikel wordt beschreven:
960484 Cumulatief updatepakket 3 voor SQL Server 2008
Informatie over SQL Server 2008 R2 BPA
De SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) bevat een regel waarmee u situaties kunt detecteren waarin u de cumulatieve update of de traceringsvlag niet hebt ingeschakeld om dit probleem op te lossen. De BPA van SQL Server Server 2008 R2 ondersteunt zowel SQL Server 2008 als SQL Server 2008 R2.
Als u het hulpprogramma BPA uitvoert en de waarschuwing 'Database-engine - tempdb-fouten, fix of traceringsvlag ontbreekt' krijgt, controleert u de versie van SQL Server en de traceringsvlaggen die zijn geconfigureerd om deze oplossing in te schakelen.
Meer informatie
| Regelsoftware | Regeltitel | Regel-id |
|---|---|---|
| BPA-regel voor SQL Server 2008 R2 | tempdb-fouten fix of trace vlag ontbreekt | RID3808 |
Opmerking: u kunt traceringsvlag 4135 of traceringsvlag 4199 inschakelen om deze oplossing in te schakelen. Traceringsvlag 4135 werd geïntroduceerd in cumulatief updatepakket 3 voor SQL Server 2008. Trace flag 4135 is ook beschikbaar in SQL Server 2008 Service Pack 1, in SQL Server 2008 Service Pack 2 en in SQL Server 2008 R2. Traceringsvlag 4199 werd geïntroduceerd in cumulatief updatepakket 7 voor SQL Server 2008, in cumulatief updatepakket 7 voor SQL Server 2008 Service Pack 1 en in cumulatief updatepakket 1 voor SQL Server 2008 R2. Voor meer informatie over trace flag 4199 klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
974006 traceringsvlag 4199 is toegevoegd om meerdere wijzigingen in het query-optimalisatieprogramma te beheren die eerder onder meerdere traceringsvlaggen zijn aangebracht Omdat de oplossing voor dit probleem een combinatie is van een specifieke hotfix-build en een traceringsvlag om de oplossing in te schakelen, voegen we de volgende tabel toe om de verschillende scenario's en de aanbevolen actie voor elk scenario weer te geven.
Klik voor meer informatie over de meest recente builds van SQL Server op het volgende artikelnummer in de Microsoft Knowledge Base:
957826 Waar vindt u informatie over de nieuwste SQL Server-builds
Meer informatie
Voor meer informatie over de lijst met builds die beschikbaar zijn na de release van SQL Server 2008, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
956909 De builds van SQL Server 2008 die zijn uitgebracht nadat SQL Server 2008 zijn uitgebracht
Voor meer informatie over het Incremental Servicing Model voor SQL Server klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
935897 Er is een incrementeel servicemodel beschikbaar van het SQL Server-team om hotfixes voor gemelde problemen te leveren
Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over het naamgevingsschema voor SQL Server-updates:
822499 Nieuw naamgevingsschema voor software-updatepakketten voor Microsoft SQL Server Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over software-updateterminologie:
824684 Beschrijving van de standaardterminologie die wordt gebruikt om Microsoft-software-updates te beschrijven