"KB2448971" – pataisa: lentelės užraktai neperkuriamos, kai įterpiate daug eilučių į lentelę "SQL Server" 2008 arba "SQL Server 2008 R2"

Simptomai

Apsvarstykite šį scenarijų:

  • Įterpiate daug eilučių į lentelę "Microsoft SQL Server" 2008 arba "SQL Server 2008 R2" naudodami vieną iš šių užklausų:

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

    Pastabos

    • <target_table> vietos rezervavimo ženklas nurodo faktinį paskirties lentelės pavadinimą.

    • <pre> vietos rezervavimo ženklas nurodo faktinį preką.

    • <source_table> vietos rezervavimo ženklas nurodo faktinę šaltinio lentelę.

  • Viršijamas lentelės užrakto didinimo slenkstis.

Šiuo atveju duomenų bazės modulis neperduoda lentelės užraktų.

Priežastis

Ši problema kyla dėl to, kad SQL serverio viduje nesuskaičiuojamos visos naujos spynos, kurias sugeneravo įterpimo operacijos. Todėl užrakto perskyrimo slenkstis gali būti nepaleidžiama, kai reikia.

Sprendimas

"SQL Server 2008" pakeitimų paketo informacija

Norėdami išspręsti šią problemą, Įsigykite naujausią "SQL Server 2008" pakeitimų paketą. daugiau informacijos rasite spustelėję toliau nurodytą straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

968382 Kaip įsigyti naujausią "SQL Server 2008" pakeitimų paketą

"SQL Server 2008 R2" pakeitimų paketo informacija

Norėdami išspręsti šią problemą, Įsigykite naujausią "SQL Server 2008 R2" pakeitimų paketą. Jei reikia daugiau informacijos, spustelėkite toliau esantį straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

2527041Kaip įsigyti naujausią "SQL Server 2008 R2" pakeitimų paketą

Statusą

"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.Ši problema pirmą kartą ištaisyta SQL serverio 2008 2 pakeitimų pakete, esančiame "SQL Server 2008". Ši problema pirmą kartą pataisyta "SQL Server 2008 R2" 1 pakeitimų pakete, esančiame "SQL Server 2008 R2".

Daugiau informacijos

Daugiau informacijos apie "Lock" perskyrimo funkciją rasite apsilankę šioje "Microsoft TechNet" svetainėje:

Bendros informacijos apie užrakinimo perskyrimoNorėdami nustatyti, ar lentelės užraktai yra pratęstamos, vykdykite šiuos Transact-SQL sakinius:

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 

Jei lentelės užraktai yra pratęstamos, paskutinis sakinys SELECT pateikia reikšmę 1 arba 2. Jei lentelės užraktai nėra pratęstamos, paskutinis sakinys SELECT pateikia reikšmę " 40 066 " arba " 40 067".

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×