Applies ToSQL Server 2008 Service Pack 4 SQL Server 2008 R2 Service Pack 3

Simptome

Luați în considerare următorul scenariu:

  • Inserați mai multe rânduri într-un tabel în Microsoft SQL Server 2008 sau în SQL Server 2008 R2 utilizând una dintre următoarele interogări:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    Note

    • Substituentul <target_table> reprezintă numele real al tabelului țintă.

    • Substituentul <predicatorul> reprezintă Predicatul real.

    • Substituentul <source_table> reprezintă tabelul sursă real.

  • Pragul de escaladare a tabelului este depășit.

În acest scenariu, motorul de baze de date nu escaladează lacătele tabelului.

Cauză

Această problemă apare deoarece SQL Server nu contorizează intern toate încuietorile noi generate de operațiunile de inserare. Prin urmare, este posibil ca pragul de escaladare a încuietorii să nu fie declanșat atunci când este necesar.

Rezolvare

Informații despre pachetul de servicii pentru SQL Server 2008

Pentru a rezolva această problemă, obțineți cel mai recent pachet Service Pack pentru SQL Server 2008. pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

968382 Cum se obține cel mai recent pachet Service Pack pentru SQL Server 2008

Informații despre pachetul de servicii pentru SQL Server 2008 R2

Pentru a rezolva această problemă, obțineți cel mai recent pachet Service Pack pentru SQL Server 2008 R2. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2527041Cum se obține cel mai recent pachet Service Pack pentru SQL Server 2008 R2

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.Această problemă a fost corectată pentru prima dată în SQL Server 2008 Service Pack 2 pentru SQL Server 2008. această problemă a fost corectată prima dată în SQL Server 2008 R2 Service Pack 1 pentru SQL Server 2008 R2.

Mai multe informații

Pentru mai multe informații despre escaladarea blocare, vizitați următorul site Web Microsoft TechNet:

Informații generale despre escaladarea blocajelorPentru a determina dacă încuietorile unui tabel sunt escaladate, derulează următoarele instrucțiuni Transact-SQL:

USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 

Dacă încuietorile tabelului sunt escaladate, Ultima instrucțiune SELECT returnează o valoare de 1 sau 2. Dacă încuietorile tabelului nu sunt escaladate, Ultima instrucțiune SELECT returnează o valoare de 40.066 sau 40.067.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.