Pogreška: #50003826 (SQL hitni popravak)
Microsoft distribuira popravke za Microsoft SQL Server 2008 kao jednu datoteku koja se može preuzeti. Budući da su popravci kumulativni, svako novo izdanje sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim izdanjem popravka za SQL Server 2008.
Simptomi
U sustavu SQL Server 2008 pokrećete upit koji umeće podatke u privremenu tablicu. Naredba INSERT sadrži podupit koji se odnosi na istu privremenu tablicu. Kada pokrenete upit, možete dobiti poruku o pogrešci kao što je sljedeća:
Napomena
poruka 605, razina 21, država 3, redak 1
Pokušaj dohvaćanja logičke stranice (1:225) u bazi podataka 2 nije uspio. Pripada jedinici za raspodjelu, 281474980315136 ne 504403158513025024.
Ako ponovno pokrenete upit, prikazat će se poruka o pogrešci slična ovoj:
Napomena
- poruka 824, razina 24, županija 2, redak 1
- SQL Server otkrili logičku pogrešku ulaza/izlaza koja se temelji na dosljednosti: netočan kontrolni zbroj (očekivano: 0x50758180; stvarno: 0x15658bfc). Došlo je tijekom čitanja stranice (1:336) u bazi podataka ID 2 na pomaku 0x000000002a0000 u datoteci 'C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Dodatne poruke u zapisniku pogrešaka sustava SQL Server ili zapisniku događaja u sustavu mogu pružiti više pojedinosti. Ovo je ozbiljno stanje pogreške koje ugrožava integritet baze podataka i potrebno ga je odmah ispraviti. Dovršavanje potpune provjere dosljednosti baze podataka (DBCC CHECKDB). Ovu pogrešku mogu uzrokovati mnogi čimbenici; dodatne informacije potražite u mrežnoj dokumentaciji SQL Server Books Online.
U nekim se slučajevima može prikazati poruka o pogrešci slična sljedećoj:
Napomena
Msg 601, Level 12, State 3, Procedure procedure name, Line number
Nije moguće nastaviti sa skeniranjem pomoću NOLOCK-a zbog kretanja podataka.
Mogući je konstrukt upita koji može proizvesti te pogreške sljedeći:
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3
Rješenje
Rješenje tog problema prvi je put izdano u kumulativnom ažuriranju 3. Dodatne informacije o nabavi tog paketa kumulativnog ažuriranja za SQL Server 2008 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
960484 Paket kumulativnog ažuriranja 3 za SQL Server 2008Napomena Budući da su međuverzije kumulativne, svako novo izdanje popravka sadrži sve hitne popravke i sigurnosne popravke obuhvaćene prethodnim izdanjem popravka za SQL Server 2008. Preporučujemo da razmislite o primjeni najnovijeg izdanja popravka koji sadrži taj hitni popravak. Za više informacija kliknite sljedeći broj članka da biste prikazali članak u Microsoftovoj bazi znanja:
956909 međuverzije SQL Server 2008 koje su izdane nakon objave SQL Server 2008Nakon instalacije tog paketa kumulativnog ažuriranja, morate omogućiti praćenje zastavice 4135. Da biste to učinili, možete dodati parametar pokretanja -T4135. Naredbu dbcc traceon(4135) možete koristiti i za određenu sesiju.
Zaobilazno rješenje
Da biste zaobišli taj problem, u privremenu tablicu dodajte stupac koji sadrži i grupirani primarni ključ i svojstvo identiteta. Da biste, primjerice, promijenili privremenu tablicu, izvršite sljedeću naredbu:
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.
Dodatne informacije
Iako se pojavljuje poruka o pogrešci 824 ili 605, baza podataka se ne oštećuje. Osim toga, te poruke o pogreškama upućuju na stranice iz baze podataka tempdb.
Da biste saznali koje su datoteke promijenjene i informacije o preduvjetima za primjenu paketa kumulativnog ažuriranja koji sadrži hitni popravak opisan u ovom članku iz Microsoftove baze znanja, kliknite sljedeći broj članka da biste ga prikazali u Microsoftovoj bazi znanja:
960484 Paket kumulativnog ažuriranja 3 za SQL Server 2008
Informacije o paketu BPA za SQL Server 2008 R2
SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) nudi pravilo za otkrivanje situacija u kojima nije omogućeno kumulativno ažuriranje ili zastavica praćenja radi rješavanja tog problema. SQL Server 2008 R2 BPA podržava SQL Server 2008 i SQL Server 2008 R2.
Ako pokrenete alat BPA i naiđete na upozorenje "Database Engine - tempdb errors fix or trace flag mising" (Mehanizam baze podataka – nedostaje popravak pogrešaka tempdb ili oznaka praćenja), morat ćete provjeriti verziju sustava SQL Server i zastavice praćenja koje su konfigurirane za omogućivanje tog popravka.
Reference
| Rule software | Naslov pravila | Identifikator pravila |
|---|---|---|
| Pravilo BPA za SQL Server 2008 R2 | TempDB pogreške Nedostatak oznake ispravka ili praćenja | RID3808 |
Napomena Da biste omogućili taj popravak, možete omogućiti zastavicu praćenja 4135 ili zastavicu praćenja 4199. Prati zastavicu 4135 uvedena je u paketu kumulativnog ažuriranja 3 za SQL Server 2008. Prati zastavicu 4135 dostupna je i u sustavu SQL Server 2008 Service Pack 1, u sustavima SQL Server 2008 Service Pack 2 i u sustavima SQL Server 2008 R2. Praćenje zastavice 4199 uvedeno je u paketu kumulativnog ažuriranja 7 za SQL Server 2008, u paketu kumulativnog ažuriranja 7 za SQL Server 2008 Service Pack 1 i u paketu kumulativnog ažuriranja 1 za SQL Server 2008 R2. Dodatne informacije o praćenju zastavice 4199 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
974006 Oznaka praćenja 4199 dodaje se za upravljanje višestrukim promjenama optimizatora upita koje su ranije izvršene pod višestrukim zastavicama praćenja Budući da rješenje ovog problema obuhvaća kombinaciju određene međuverzije hitnog popravka i zastavice praćenja radi omogućivanja popravka, uvrstili smo sljedeću tablicu u kojoj su prikazani različiti scenariji i preporučene radnje koje trebate poduzeti za svaki scenarij.
Dodatne informacije o najnovijim međuverzijama sustava SQL Server potražite u članku iz Microsoftove baze znanja pod brojem
957826 Gdje pronaći informacije o najnovijim međuverzijama SQL Server
Reference
Dodatne informacije o popisu međuverzija koje su dostupne nakon izdanja sustava SQL Server 2008 potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
956909 međuverzije SQL Server 2008 koje su izdane nakon objave SQL Server 2008
Dodatne informacije o modelu inkrementalnog servisiranja za SQL Server potražite u članku iz Microsoftove baze znanja pod brojem
935897 Tim za SQL Server dostupan je model inkrementalnog servisiranja za isporuku hitnih popravaka za prijavljene probleme
Dodatne informacije o shemi imenovanja za ažuriranja sustava SQL Server potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
822499 Nova shema imenovanja za pakete ažuriranja softvera za Microsoft SQL Server Dodatne informacije o terminologiji ažuriranja softvera potražite u članku iz Microsoftove baze znanja pod brojem
824684 Opis standardne terminologije, koja se koristi za opis Microsoftovih softverskih ažuriranja