Sümptomid

Arvestage järgmise stsenaariumiga.

  • Saate lisada mitu rida tabelisse Microsoft SQL Server 2008 või SQL Server 2008 R2, kasutades ühte järgmistest päringutest.

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

    Märkused

    • <target_table> kohatäide tähistab tegelikku sihttabeli nime.

    • <-i > kohatäide tähistab tegelikku eelolevat.

    • <source_table> kohatäide tähistab tegelikku allika tabelit.

  • Tabeli lukustuse suurendamise künnis on ületatud.

Selle stsenaariumi korral ei suurenda andmebaasi mootor tabeli lukke.

Põhjus

See probleem ilmneb seetõttu, et SQL Server ei Loenda sisemiselt kõik uued lukud, mis luuakse toimingute lisamise teel. Seetõttu ei pruugita luku eskaleerumise künnist käivitada, kui see on nõutav.

Lahendus

SQL Server 2008 hoolduspaketi teave

Selle probleemi lahendamiseks Hankige SQL Server 2008 uusim hoolduspakett. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:

968382 SQL Server 2008 uusima hoolduspaketi hankimine

SQL Server 2008 R2 hoolduspaketi teave

Selle probleemi lahendamiseks Hankige SQL Server 2008 R2 uusim hoolduspakett. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:

2527041SQL Server 2008 R2 uusima hoolduspaketi hankimine

Olek

Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.See probleem lahendati kõigepealt SQL Server 2008 Service Pack 2 SQL Server 2008. See probleem lahendati kõigepealt SQL Server 2008 R2 hoolduspaketiga Service Pack 1 SQL Server 2008 R2.

Lisateave

Lisateavet Lock eskaleerumise kohta leiate järgmiselt Microsoft TechNeti veebisaidilt:

Üldine teave Lock eskaleerumise kohtaKui soovite kindlaks teha, kas tabeli lukud on eskaleerunud, käivitage järgmised Transact-SQL-laused.

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 

Kui tabeli lukud on eskaleerunud, tagastatakse viimase SELECT-lause väärtuseks kas 1 või 2. Kui tabeli lukud pole eskaleerunud, tagastatakse viimase SELECT-lause väärtuseks kas 40 066 või 40 067.

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Kui rahul te keelekvaliteediga olete?
Mis mõjutas teie hinnangut?

Täname tagasiside eest!

×