Feil: #50003826 (SQL-hurtigreparasjon)
Microsoft distribuerer Microsoft SQL Server 2008-rettelser som én nedlastbar fil. Fordi rettelsene er kumulative, inneholder hver ny utgivelse alle hurtigreparasjoner og alle sikkerhetsrettelser som fulgte med den forrige utgivelsen av SQL Server 2008-feilrettinger.
Symptomer
I SQL Server 2008 kjører du en spørring som setter inn data i en midlertidig tabell. Insert-setningen inneholder en delspørring som refererer til den samme midlertidige tabellen. Når du kjører spørringen, kan du få en feilmelding som ligner på følgende:
Obs!
Msg 605, nivå 21, delstat 3, linje 1
Forsøk på å hente logisk side (01:225) i database 2 mislyktes. Den tilhører tildelingsenheten, 281474980315136 ikke 504403158513025024.
Hvis du kjører spørringen på nytt, får du en feilmelding som ligner på følgende:
Obs!
- Msg 824, nivå 24, delstat 2, linje 1
- SQL Server oppdaget en logisk konsekvensbasert I/U-feil: feil kontrollsum (forventet: 0x50758180; faktisk: 0x15658bfc). Det skjedde under lesing av side (01:336) i database-ID 2 ved forskyvning 0x000000002a0000 i fil 'C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Flere meldinger i SQL Server-feilloggen eller systemhendelsesloggen kan gi mer informasjon. Dette er en alvorlig feil som truer databasens integritet og må korrigeres umiddelbart. Fullfør en fullstendig databasekonsekvenskontroll (DBCC CHECKDB). Denne feilen kan være forårsaket av mange faktorer; Hvis du vil ha mer informasjon, kan du se SQL Server Books Online.
I noen tilfeller kan du også få en feilmelding som ligner på følgende:
Obs!
Msg 601, nivå 12, tilstand 3, prosedyre procedure navn, linjelinjenummer
Kan ikke fortsette skanningen med NOLOCK på grunn av dataflytting.
Et mulig spørringskonstruksjon som kan produsere disse feilene, er som følger:
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3
Oppløsning
Løsningen på dette problemet ble først utgitt i kumulativ oppdatering 3. Hvis du vil ha mer informasjon om hvordan du får tak i denne kumulative oppdateringspakken for SQL Server 2008, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
960484 Kumulativ oppdateringspakke 3 for SQL Server 2008Note Siden buildene er kumulative, inneholder hver nye reparasjon alle hurtigreparasjoner og sikkerhetsrettelser som fulgte med den forrige SQL Server 2008-utgivelsen. Vi anbefaler at du vurderer å bruke den nyeste utgivelsen som inneholder denne hurtigreparasjonen. Hvis du vil ha mer informasjon, kan du lese følgende artikkel i Microsoft Knowledge Base:
956909 SQL Server 2008-versjonene som ble utgitt etter at SQL Server 2008 ble utgittNår du har installert denne kumulative oppdateringspakken, må du aktivere sporingsflagg 4135. Dette gjør du ved å legge til oppstartsparameteren -T4135. Du kan også bruke dbcc traceon(4135)-setningen for en bestemt økt.
Midlertidig løsning
Du kan omgå dette problemet ved å legge til en kolonne som inneholder både en gruppert primærnøkkel og en identitetsegenskap i den midlertidige tabellen. Kjør for eksempel følgende setning for å endre den midlertidige tabellen:
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».
Mer informasjon
Selv om du får feilmelding 824 eller 605, blir ikke databasen skadet. Disse feilmeldingene refererer også til sider fra tempdb-databasen.
Hvis du vil ha mer informasjon om hvilke filer som endres, og informasjon om eventuelle forutsetninger for å bruke den kumulative oppdateringspakken som inneholder hurtigreparasjonen beskrevet i denne artikkelen i Microsoft Knowledge Base, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
960484 kumulativ oppdateringspakke 3 for SQL Server 2008
Informasjon om SQL Server 2008 R2 BPA
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) inneholder en regel for å oppdage situasjoner der du ikke har aktivert den kumulative oppdateringen eller sporingsflagget for å løse dette problemet. SQL Server 2008 R2 BPA støtter både SQL Server 2008 og SQL Server 2008 R2.
Hvis du kjører BPA-verktøyet og støter på en advarsel om at databasemotor – tempdb-feil løser eller sporer flagg mangler, må du kontrollere versjonen av SQL Server og sporingsflaggene som er konfigurert til å aktivere denne løsningen.
Kilder
| Regelprogramvare | Regeltittel | Regelidentifikator |
|---|---|---|
| SQL Server 2008 R2 BPA-regel | tempdb-feil, løs eller spor manglende flagg | RID3808 |
Du kan aktivere sporingsflagg 4135 eller sporingsflagg 4199 for å aktivere denne løsningen. Sporingsflagg 4135 ble introdusert i kumulativ oppdateringspakke 3 for SQL Server 2008. Sporingsflagg 4135 er også tilgjengelig i SQL Server 2008 Service Pack 1, i SQL Server 2008 Service Pack 2 og i SQL Server 2008 R2. Sporingsflagg 4199 ble innført i kumulativ oppdateringspakke 7 for SQL Server 2008, i kumulativ oppdateringspakke 7 for SQL Server 2008 Service Pack 1 og i kumulativ oppdateringspakke 1 for SQL Server 2008 R2. Hvis du vil ha mer informasjon om sporingsflagg 4199, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
974006 Sporingsflagg 4199 er lagt til for å kontrollere flere endringer i spørringsoptimalisering som tidligere ble gjort under flere sporingsflagg Fordi løsningen på dette problemet omfatter en kombinasjon av et bestemt hurtigreparasjonsbygg og et sporingsflagg for å aktivere rettelsen, inkluderer vi tabellen nedenfor for å vise de ulike scenariene og den anbefalte handlingen du kan utføre for hvert scenario.
Hvis du vil ha mer informasjon om de nyeste SQL Server-byggene, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
957826 Her finner du informasjon om de nyeste SQL Server byggene
Kilder
Hvis du vil ha mer informasjon om listen over bygg som er tilgjengelige etter utgivelsen av SQL Server 2008, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
956909 SQL Server 2008-versjonene som ble utgitt etter at SQL Server 2008 ble utgitt
Hvis du vil ha mer informasjon om den inkrementell vedlikeholdsmodellen for SQL Server, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
935897 En inkrementell vedlikeholdsmodell er tilgjengelig fra SQL Server-teamet som kan levere hurtigreparasjoner for rapporterte problemer
Hvis du vil ha mer informasjon om navnegivningsskjemaet for SQL Server-oppdateringer, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
822499 Nytt navneskjema for Microsoft SQL Server programvareoppdateringspakker Hvis du vil ha mer informasjon om terminologi for programvareoppdateringer, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
824684 Beskrivelse av standardterminologien som brukes til å beskrive Microsoft-programvareoppdateringer