Viga: #50003826 (SQL-i kiirparandus)
Microsoft levitab Microsoft SQL Server 2008 parandusi ühe allalaaditava failina. Kuna parandused on kumulatiivsed, sisaldab iga uus väljaanne kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmises SQL Server 2008 paranduse väljaandes.
Sümptomid
rakenduses SQL Server 2008 käivitate päringu, mis lisab andmed ajutisse tabelisse. Lisamislause sisaldab alampäringuid, mis viitavad samale ajutisele tabelile. Päringu käivitamisel võidakse kuvada tõrketeade, mis sarnaneb järgmisega:
Märkus.
Msg 605, tase 21, olek 3, rida 1
Katse tuua andmebaasis 2 loogilist lehte (1:225) nurjus. See kuulub jaotusüksusesse, 281474980315136 ei 504403158513025024.
Kui käivitate päringu uuesti, kuvatakse tõrketeade, mis sarnaneb järgmisega:
Märkus.
- Msg 824, tase 24, osariik 2, rida 1
- SQL Server tuvastanud loogilise ühtsusepõhise I/O-tõrke: vale kontrollsumma (eeldatud: 0x50758180; tegelik: 0x15658bfc). See ilmnes andmebaasi ID 2 lehe (1:336) lugemisel nihke 0x000000002a0000 failis C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Täiendavad teated SQL Server tõrkelogis või süsteemisündmuste logis võivad pakkuda üksikasjalikumat teavet. See on tõsine tõrge, mis ohustab andmebaasi terviklus ja tuleb kohe parandada. Andmebaasi ühtsuse täieliku kontrolli lõpuleviimine (DBCC CHECKDB). See viga võib olla põhjustatud paljudest teguritest; lisateavet leiate artiklist SQL Server Raamatud Veebis.
Mõnel juhul võidakse kuvada ka tõrketeade, mis sarnaneb järgmisega:
Märkus.
Msg 601, 12. tase, olek 3, protseduuri procedure'i nimi, reanumber
NoLOCK-iga kontrollimist ei saanud andmete liikumise tõttu jätkata.
Võimalik päringukonstruktsioon, mis võib neid tõrkeid põhjustada, on järgmine.
insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3
Lahendus
Selle probleemi lahendus anti esimest korda välja koondvärskenduses 3. Lisateavet selle koondvärskenduspaketi hankimise kohta SQL Server 2008 jaoks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:
960484 koondvärskenduse pakett 3 SQL Server 2008Note Kuna järgud on kumulatiivsed, sisaldab iga uus parandus välja kõik kiirparandused ja kõik turbeparandused, mis lisati eelmises SQL Server 2008 paranduse väljaandes. Soovitame teil kaaluda viimase paranduse väljaandmist, mis sisaldab seda kiirparandust. Microsofti teabebaasis oleva artikli kuvamiseks klõpsake järgmist artiklinumbrit.
956909 Pärast SQL Server 2008 väljaandmist välja antud SQL Server 2008 järgud Pärast selle koondvärskenduspaketi installimist peate lubama jälituslipu 4135. Selleks saate lisada käivitusparameetri -T4135. Samuti saate kindla seansi jaoks kasutada lauset dbcc traceon(4135).
Ajutine lahendus
Probleemi lahendamiseks lisage ajutisse tabelisse veerg, mis sisaldab nii kobardatud primaarvõtit kui ka identiteediatribuuti. Näiteks ajutise tabeli muutmiseks käivitage järgmine lause:
ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Olek
Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.
Veel teavet
Kuigi kuvatakse tõrketeade 824 või 605, siis andmebaasi ei saa rikutud. Lisaks viitavad need tõrketeated tempdb-andmebaasi lehtedele.
Lisateavet selle kohta, milliseid faile muudetakse, ja teavet mis tahes eeltingimuste kohta rakendada koondvärskenduse pakett, mis sisaldab selles Microsofti teabebaasi artiklis kirjeldatud kiirparandust, klõpsake Microsofti teabebaasi artikli vaatamiseks järgmist artikli numbrit:
960484 koondvärskenduse pakett 3 SQL Server 2008 jaoks
SQL Server 2008 R2 BPA teave
SQL Server 2008 R2 parimate tavade analüsaator (SQL Server 2008 R2 BPA) pakub reegli, et tuvastada olukorrad, kus teil pole selle probleemi lahendamiseks lubatud koondvärskendust või jälituslipp lubatud. SQL Server 2008 R2 BPA toetab nii SQL Server 2008 kui ka SQL Server 2008 R2.
Kui käivitate BPA tööriista ja kuvatakse hoiatus "Database Engine - tempdb errors fix or trace flag missing", peate kontrollima SQL Server versiooni ja jälituslippu, mis on konfigureeritud selle paranduse lubamiseks.
Viited
| Reegli tarkvara | Reegli tiitel | Reegli identifikaator |
|---|---|---|
| SQL Server 2008 R2 BPA reegel | tempdb tõrgete parandamine või jälituse lipp puudub | RID3808 |
Märkus. Selle paranduse lubamiseks saate lubada jälituslipu 4135 või jälituslipu 4199. Jälituslipp 4135 võeti kasutusele koondvärskenduse paketis 3 SQL Server 2008 jaoks. Trace flag 4135 on saadaval ka versioonis SQL Server 2008 Service Pack 1, SQL Server 2008 Service Pack 2 ja SQL Server 2008 R2. Jälituslipp 4199 võeti kasutusele koondvärskenduse paketis 7 SQL Server 2008 jaoks, koondvärskenduse paketis 7 SQL Server 2008 hoolduspaketis Service Pack 1 ja koondvärskenduse paketis 1 SQL Server 2008 R2. Jälituslipu 4199 kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.
974006 Jälita lippu 4199 lisatakse mitme varem mitme jälituslipu all tehtud päringu optimeerija muudatuste juhtimiseks Kuna selle probleemi lahendus hõlmab konkreetse kiirparanduse järgu ja jälituslipu kombinatsiooni paranduse lubamiseks, lisame järgmisesse tabelisse, et kuvada erinevad stsenaariumid ja soovitatav toiming iga stsenaariumi puhul.
Uusimate SQL Server järkude kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.
957826 Kust leida teavet uusimate SQL Server järkude kohta?
Viited
Pärast SQL Server 2008 väljaandmist saadaolevate järkude loendi kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit.
956909 Pärast SQL Server 2008 väljaandmist välja antud SQL Server 2008 järgud
SQL Server inkrementaalteenuse mudeli kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.
935897 SQL Server meeskonnalt on saadaval astmeline teenindusmudel teatatud probleemide kiirparanduste tegemiseks
SQL Server värskenduste nimetamisskeemi kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.
822499 Microsofti SQL Server tarkvaravärskenduspakettide uus nimeskeemTarkvaravärskenduste terminoloogia kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:
824684 Microsofti tarkvaravärskenduste kirjeldamiseks kasutatava standardterminite kirjeldus