KB960770 - REMEDIERE: Primiți eroarea 605 și eroarea 824 atunci când rulați o interogare care inserează date într-un tabel temporar din SQL Server

Se aplică la
SQL Server 2008 Service Pack 3

Eroare: #50003826 (Remediere rapidă SQL)

Microsoft distribuie remedierile Microsoft SQL Server 2008 ca fișier unic ce se poate descărca. Deoarece remedierile sunt cumulative, fiecare ediție nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu remedierea anterioară a SQL Server 2008.

Simptome

În SQL Server 2008, rulați o interogare care inserează date într-un tabel temporar. Instrucțiunea insert conține o subinterogare care face referire la același tabel temporar. Când rulați interogarea, este posibil să primiți un mesaj de eroare care seamănă cu următorul:

Notă

Msg 605, Level 21, State 3, Line 1

Încercarea de preluare a paginii logice (1:225) din baza de date 2 nu a reușit. Aparține unității de alocare 281474980315136 nu 504403158513025024.

Dacă executați din nou interogarea, primiți un mesaj de eroare care seamănă cu următorul:

Notă

        

  • Msg 824, Level 24, State 2, Line 1
  • SQL Server detectat o eroare I/O bazată pe consistență logică: sumă de verificare incorectă (așteptat: 0x50758180; real: 0x15658bfc). Aceasta a avut loc în timpul unei citiri a paginii (1:336) în ID-ul bazei de date 2 la 0x000000002a0000 de deplasare din fișierul "C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf". Mesajele suplimentare din jurnalul de erori SQL Server sau jurnalul de evenimente de sistem pot oferi mai multe detalii. Aceasta este o condiție de eroare severă care amenință integritatea bazei de date și trebuie corectată imediat. Parcurgeți o verificare completă a consistenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mai mulți factori; Pentru mai multe informații, consultați Cărți online despre SQL Server.

În unele cazuri, este posibil, de asemenea, să primiți un mesaj de eroare care seamănă cu următorul:

Notă

Mesaj 601, Nivel 12, Stare 3, Nume procedură deprocedură, Număr de linie
Imposibil de continuat scanarea cu NOLOCK din cauza mișcării datelor.

Un construct posibil de interogare care poate produce aceste erori este după cum urmează:

insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t 
on s.col3 = t.col3 

      

Rezolvare

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 3. Pentru mai multe informații despre cum se obține acest pachet de actualizări cumulative pentru SQL Server 2008, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

960484 Pachetul de actualizare cumulativă 3 pentru SQL Server 2008Notă, deoarece compilările sunt cumulative, fiecare remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu remedierea anterioară de la SQL Server 2008. Vă recomandăm să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

956909 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008După ce instalați acest pachet de actualizare cumulativă, trebuie să activați semnalizarea de urmărire 4135. Pentru a face acest lucru, puteți adăuga parametrul de pornire -T4135. Sau puteți utiliza instrucțiunea dbcc traceon(4135) pentru o anumită sesiune.

Soluție

Pentru a rezolva această problemă, adăugați la tabelul temporar o coloană care conține atât o cheie primară în clustere, cât și o proprietate de identitate. De exemplu, rulați următoarea instrucțiune pentru a modifica tabelul temporar:

ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.

Mai multe informații

Deși întâlniți mesajul de eroare 824 sau 605, baza de date nu se deteriorează. De asemenea, aceste mesaje de eroare fac referire la pagini din baza de date tempdb.

Pentru mai multe informații despre fișierele modificate și pentru informații despre cerințele preliminare pentru aplicarea pachetului de actualizare cumulativă care conține remedierea rapidă descrisă în acest articol din Baza de cunoștințe Microsoft, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

960484 Pachetul de actualizare cumulativă 3 pentru SQL Server 2008

Informații despre SQL Server 2008 R2 BPA

SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) oferă o regulă pentru a detecta situațiile în care nu aveți actualizarea cumulativă sau semnalizarea de urmărire activată pentru a rezolva această problemă. SQL Server 2008 R2 BPA acceptă atât SQL Server 2008, cât și SQL Server 2008 R2.

Dacă rulați instrumentul BPA și întâmpinați un avertisment "Motor bază de date - remediere erori tempdb sau semnalizare de urmărire lipsă", trebuie să verificați versiunea de SQL Server și semnalizatoarele de urmărire configurate pentru a activa această remediere.

Referințe

Software reguli Titlul regulii Identificatorul regulii
Regulă BPA SQL Server 2008 R2 Erori tempdb Lipsește semnalizatorul de remediere sau de urmărire RID3808

Notă: puteți activa semnalizarea de urmărire 4135 sau semnalizarea de urmărire 4199 pentru a activa această remediere. Semnalizarea de urmărire 4135 a fost introdusă în pachetul de actualizare cumulativă 3 pentru SQL Server 2008. Semnalizatorul de urmărire 4135 este disponibil și în SQL Server 2008 Service Pack 1, în SQL Server 2008 Service Pack 2 și în SQL Server 2008 R2. Semnalizarea de urmărire 4199 a fost introdusă în pachetul de actualizare cumulativă 7 pentru SQL Server 2008, în pachetul de actualizare cumulativă 7 pentru SQL Server 2008 Service Pack 1 și în pachetul de actualizare cumulativă 1 pentru SQL Server 2008 R2. Pentru informații suplimentare despre semnalizarea de urmărire 4199, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

974006 Semnalizarea de urmărire 4199 este adăugată pentru a controla modificările multiple ale optimizatorului de interogare făcute anterior sub semnalizări de urmărire multiple Deoarece remedierea pentru această problemă implică o combinație între o compilare specifică de remediere rapidă și un semnalizator de urmărire pentru a activa remedierea, includem următorul tabel pentru a afișa diferitele scenarii și acțiunile recomandate pentru fiecare scenariu.

Recomandări de actualizare a semnalizatoarelor de compilare și urmărire SQL Server

  Pentru mai multe informații despre cele mai recente compilări SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

957826 Unde găsiți informații despre cele mai recente compilări SQL Server

Referințe

Pentru mai multe informații despre lista de compilări disponibile după lansarea SQL Server 2008, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

956909 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008

Pentru informații suplimentare despre modelul incremental de service pentru SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

935897 Un model incremental de service este disponibil de la echipa SQL Server pentru a livra remedieri rapide pentru problemele raportate

Pentru mai multe informații despre schema de denumire pentru actualizările SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

822499 Schemă de denumire nouă pentru pachetele de actualizări software Microsoft SQL Server Pentru mai multe informații despre terminologia actualizării de software, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

824684 Descrierea terminologiei standard care este utilizată pentru a descrie actualizările de software Microsoft