Utrymme som en tabell använder inte helt när du har använt en DELETE-programsats för att ta bort data från tabellen i SQL Server


Bugg nummer: 219514 (SQL Server 8,0)

Symptom


När du har använt ett DELETE-uttryck i Microsoft SQL Server för att ta bort data från en tabell, kan det hända att det utrymme som används i tabellen inte helt släpps. När du sedan försöker infoga data i databasen kan du få följande fel meddelande:
Det gick inte att tilldela utrymme för objektet 'TableName' i databasen 'databasename' eftersom gruppen ' Primary ' är full.
Anmärkning TableName representerar namnet på tabellen. Databasename representerar namnet på den databas som innehåller tabellen.

Orsak


Det här problemet uppstår eftersom SQL Server bara släpper alla sidor som en heap-tabell använder om följande gäller:
  • En borttagning av den här tabellen sker.
  • Ett lås för tabell nivå håller på att hållas.
Obs! En heap-tabell är en tabell som inte är kopplad till ett grupperat index. Om sidor inte är tilldelade kan andra objekt i databasen inte återanvända sidorna. Men när du aktiverar en rad versions isolerings nivå i en SQL Server 2005-databas kan sidor inte frigöras även om ett lås på tabell nivå hålls. Mer information om olika isolerings nivåer för rad versioner finns i avsnittet "använda rad versions isolerings nivåer" i SQL Server 2005 Books Online.

Lösning


Undvik problemet med någon av följande metoder:
  • Infoga ett TABLOCK-tips i DELETE-instruktionen om en rad version baserad isolerings nivå inte är aktive rad. Du kan till exempel använda en instruktion som liknar följande:
    DELETE FROM <TableName> WITH (TABLOCK)
    Obs!<TableName> representerar namnet på tabellen.
  • Använd instruktionen TRUNKERA tabell om du vill ta bort alla poster i tabellen. Du kan till exempel använda en instruktion som liknar följande:
    TRUNCATE TABLE <TableName>
  • Skapa ett grupperat index på en kolumn i tabellen. Mer information om hur du skapar ett grupperat index i en tabell finns i avsnittet "skapa ett grupperat index" i SQL Server Books Online.

Status


Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".