Tarpas, kurį naudoja lentelė nėra visiškai išleistas po to, kai naudojate naikinimo sakinį, kad panaikintumėte duomenis iš lentelės SQL serveryje


Bug #: 219514 (SQL Server 8,0)

Simptomai


Kai "Microsoft SQL Server" naudojate naikinimo sakinį Norėdami panaikinti duomenis iš lentelės, galite pastebėti, kad tarpas, kurį naudoja lentelė, nėra visiškai išleistas. Kai bandote įterpti duomenis į duomenų bazę, galite gauti šį klaidos pranešimą:
Negalima priskirti vietos objektui "TableName" duomenųbazės duomenų BAZEI, nes "pirminė" failų grupė yra visa.
Pastaba " TableName " nurodo lentelės pavadinimą. Duomenų bazės pavadinimas nurodo duomenų bazės, kurioje yra lentelė, pavadinimą.

Priežastis


Ši problema kyla dėl to, kad SQL serveris išleidžia tik visus puslapius, kuriuos naudoja krūvos lentelė, kai tenkinamos šios sąlygos:
  • Įvyko šios lentelės naikinimas.
  • Laikomas lentelės lygio užraktas.
Pastaba Krūvos lentelė yra bet kokia lentelė, kuri nėra susieta su sudėtine indeksu. Jei puslapiai nėra Deal, kiti duomenų bazės objektai negali naudoti puslapių. Tačiau įjungus eilutės versijų kūrimo pagrindo izoliavimo lygį "SQL Server" 2005 duomenų bazėje, puslapių negalima paleisti, net jei vyksta lentelės lygio užraktas. Daugiau informacijos apie eilutės versijų kūrimą pagal izoliavimo lygius ieškokite temoje "SQL Server 2005 Books Online" naudojant eilutės versijų kūrimo pagrindo izoliavimo lygius.

Sprendimas


Norėdami išspręsti šią problemą, naudokite vieną iš šių būdų:
  • Įtraukti tabuliavimo užuominą į sakinį DELETE, jei neįgalintas eilutės versijų kūrimas pagrįstas izoliavimo lygis. Pvz., naudokite teiginį, panašų į šį:
    DELETE FROM <TableName> WITH (TABLOCK)
    Pastaba<tablename> nurodo lentelės pavadinimą.
  • Naudokite SUTRUMPINIMO lentelės sakinį, jei norite panaikinti visus lentelėje esančius duomenis. Pvz., naudokite teiginį, panašų į šį:
    TRUNCATE TABLE <TableName>
  • Sukurti sudėtinius indeksus lentelės stulpelyje. Daugiau informacijos apie tai, kaip sukurti sudėtinio indekso lentelę, rasite "SQL Server" interneto knygų temoje "sankaupos indekso kūrimas".

Statusą


"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.