Kļūda: #50003826 (SQL labojumfails)
Microsoft izplata Microsoft SQL Server 2008 labojumus kā vienu lejupielādējamu failu. Tā kā labojumi ir kumulatīvi, katrs jauns laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2008 labojumu laidienā.
Simptomi
SQL Server 2008, izpildot vaicājumu, kas ievieto datus pagaidu tabulā. Ievietotais priekšraksts ietver apakšvaicājumu, kas satur norādes uz to pašu pagaidu tabulu. Izpildot vaicājumu, var tikt parādīts kļūdas ziņojums, kas līdzīgs šim:
Ziņojums 605, līmenis 21, stāvoklis 3, Line 1Attempt ienest loģisko lapu (1: 225) 2. datu bāzē neizdevās. Tas attiecas uz iedalīšanas vienību 281474980315136, nevis uz 504403158513025024.
Izpildot vaicājumu vēlreiz, tiek parādīts kļūdas ziņojums, kas līdzīgs šim:
Ziņojums 824, līmenis 24, stāvoklis 2, rindiņa 1
SQL Server noteica loģiskas konsekvences ievadizvades kļūdu: nepareiza kontrolsumma (paredzēts: 0x50758180; faktiskā: 0x15658bfc). Tā radās lapas (1: 336) lasīšanas laikā datu bāzē ID 2 pie nobīde 0x000000002a0000 failā ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.MDF ". Papildu ziņojumi SQL Server kļūdu žurnālā vai sistēmas notikumu žurnālā var sniegt detalizētu informāciju. Šis ir nopietns kļūdas stāvoklis, kas apdraud datu bāzes integritāti, un ir nekavējoties jānovērš. Pabeidziet pilnu datu bāzes konsekvences pārbaudi (DBCC CHECKDB). Šo kļūdu var izraisīt daudzi faktori; lai iegūtu papildinformāciju, skatiet SQL Server tiešsaistes grāmatas.
Dažos gadījumos var tikt parādīts kļūdas ziņojums, kas līdzīgs šim:
Ziņojums 601, līmenis 12, stāvoklis 3, procedūra pprocedūras nosaukumsrindas numursnevar turpināt pārbaudi ar NOLOCK datu kustības dēļ.
Iespējams vaicājuma konstrukcijas, kas var radīt šīs kļūdas ir šādi:
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3
Risinājums
Šīs problēmas labojums vispirms tika izlaists kumulatīvais atjauninājums 3. Lai iegūtu papildinformāciju par to, kā iegūt šo kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
960484 3. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008Piezīme. Tā kā būvējumi ir kumulatīvi, katrs jauns labojumu laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2008 labojumu laidienā. Ieteicams apsvērt tāda visjaunākā labojuma laidiena pielietošanu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
956909 SQL Server 2008 būvējumi, kas tika izlaisti pēc sistēmas SQL Server 2008 izlaišanasPēc šī kumulatīvā atjauninājuma pakotnes instalēšanas ir jāiespējo trasējuma karodziņš 4135. Lai to izdarītu, varat pievienot -T4135 startēšanas parametru. Vai arī varat izmantot priekšrakstu dbcc traceon(4135) konkrēto sesiju.
Risinājums
Lai novērstu šo problēmu, pievienojiet kolonnu, kurai ir klasterveida primārā atslēga un identitātes rekvizītu pagaidu tabulu. Piemēram, palaidiet šo priekšrakstu, lai mainītu pagaidu tabulu:
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
Statuss
Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".
Papildinformācija
Lai gan tiek parādīts kļūdas ziņojums 824 vai 605, datu bāze netiek bojāta. Turklāt šie kļūdu ziņojumi atsauces uz lapām no tempdb datu bāzes.Lai iegūtu papildinformāciju par to, kuri faili tiek mainīti un par priekšnosacījumiem, lai lietotu kumulatīvo atjauninājumu pakotni, kurā ietverts šajā Microsoft zināšanu bāzes rakstā aprakstītais labojumfails, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
960484 3. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008
SQL Server 2008 R2 BPA informācija
SQL Server 2008 R2 labākās prakses analizators (SQL Server 2008 R2 BPA) nodrošina kārtulu, lai noteiktu situācijas, kurās nav kumulatīvā atjauninājuma vai nav iespējots trasēšanas karodziņš, lai novērstu šo problēmu. SQL Server 2008 R2 BPA atbalsta gan SQL Server 2008 un SQL Server 2008 R2. Palaidiet rīku BPA un rodas "Database Engine — tempdb kļūdu labojuma vai trasēšanas karodziņa trūkst" brīdinājums, jums ir jāpārbauda trasēšanas karodziņus, kas ir konfigurēti tā, lai iespējotu šo labojumu un SQL Server versiju.
Atsauces
Kārtulas programmatūra |
Kārtulas nosaukums |
Kārtulas identifikators |
SQL Server 2008 R2 BPA kārtula |
trūkst tempdb kļūdu labojuma vai trasēšanas karodziņa |
RID3808 |
Piezīme. Varat iespējot trasēšanas karodziņu 4135 vai 4199, lai iespējotu šo labojumu. Trasēšanas karodziņš 4135 tika ieviesta 3. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008. Trasēšanas karodziņš 4135 ir arī pieejami SQL Server 2008 1. servisa pakotni, SQL Server 2008 2. servisa pakotni un SQL Server 2008 R2. Trasēšanas karodziņš 4199 pirmoreiz tika ieviests 7. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008, 7. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008 1. servisa pakotnei un 1. kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008 R2. Lai iegūtu papildinformāciju par trasēšanas karodziņu 4199, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
974006 Trasēšanas karodziņš 4199 ir pievienots, lai kontrolētu vairākas vaicājumu optimizatora izmaiņas, kas veiktas, izmantojot vairākus trasēšanas karodziņus Tā kā šīs problēmas labojums ietver noteikta labojumfaila būvējuma un trasēšanas karodziņu, lai iespējotu labojumu kombinācija, mums ir arī šo tabulu, lai parādītu atšķirīgos gadījumus un ieteicamo darbību katram gadījumam.Lai iegūtu papildinformāciju par jaunāko būvējumu SQL Server, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
957826 Kur meklēt informāciju par jaunāko SQL Server balstās
Atsauces
Lai iegūtu papildinformāciju par to būvējumu sarakstu, kas pieejami pēc sistēmas SQL Server 2008 izlaišanas, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
956909 SQL Server 2008 būvējumi, kas tika izlaisti pēc sistēmas SQL Server 2008 izlaišanasLai iegūtu papildinformāciju par inkrementālās apkopes modeli sistēmai SQL Server, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
935897 Inkrementālās apkopes modelis ir pieejams no SQL Server grupas, lai nodrošinātu labojumfailus paziņotajām problēmāmLai iegūtu papildinformāciju par nosaukumdošanas shēma SQL Server atjauninājumus, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
822499Jauna Microsoft SQL Server programmatūras atjauninājumu pakotņu nosaukumdošanas shēmaLai iegūtu papildinformāciju par programmatūras atjauninājumu terminoloģiju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:
824684 Microsoft programmatūras atjauninājumu raksturošanai izmantotās standarta terminoloģijas apraksts