Al momento sei offline in attesa che la connessione Internet venga ristabilita

Spazio che utilizza una tabella non viene rilasciato completamente dopo aver utilizzato un'istruzione DELETE per eliminare i dati dalla tabella in SQL Server

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 913399
Bug #: 219514 (SQL Server 8.0)
Sintomi
Dopo aver utilizzato un'istruzione DELETE in Microsoft SQL Server per eliminare dati da una tabella, è possibile notare che lo spazio che utilizza la tabella non viene rilasciato completamente. Quando si tenta di inserire dati nel database, viene potrebbe essere visualizzato il seguente messaggio di errore:
Impossibile allocare spazio per l'oggetto "TableName" nel database ' DatabaseName ' perché il filegroup 'PRIMARY' è pieno.
Nota TableName rappresenta il nome della tabella. DatabaseName rappresenta il nome del database che contiene la tabella.
Cause
Questo problema si verifica perché SQL Server rilascia solo le pagine una tabella heap utilizza le seguenti condizioni sono vere:
  • Si verifica un'eliminazione in questa tabella.
  • È correntemente un blocco a livello di tabella.
Nota Una tabella heap è qualsiasi tabella che non è associato un indice cluster.

Se le pagine non vengono deallocate, gli altri oggetti del database non è possibile riutilizzare le pagine.

Tuttavia, quando si attiva un livello di isolamento basato sul controllo delle versioni riga in un database di SQL Server 2005, le pagine Impossibile rilasciare anche se è correntemente un blocco a livello di tabella. Per ulteriori informazioni sui livelli di isolamento basato sul controllo delle versioni di riga, vedere l'argomento di "Livelli di isolamento basato sul controllo delle versioni mediante riga" nella documentazione in linea di SQL Server 2005.
Workaround
Per ovviare al problema, utilizzare uno dei metodi descritti di seguito:
  • Includere un hint TABLOCK nell'istruzione DELETE se non è abilitato un livello di isolamento basato sul controllo delle versioni di riga. Ad esempio, utilizzare un'istruzione simile al seguente:
    DELETE FROM <TableName> WITH (TABLOCK)
    Nota <TableName> rappresenta il nome della tabella.
  • Se si desidera eliminare tutti i record nella tabella, utilizzare l'istruzione TRUNCATE TABLE. Ad esempio, utilizzare un'istruzione simile al seguente:
    TRUNCATE TABLE <TableName>
  • Creare un indice cluster in una colonna della tabella. Per ulteriori informazioni su come creare un indice cluster in una tabella, vedere "Creazione di un indice cluster" nella documentazione in linea di SQL Server.
Status
Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 913399 - Ultima revisione: 11/02/2007 09:50:43 - Revisione: 1.2

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbmt kbexpertiseadvanced kbprb KB913399 KbMtit
Feedback
/html>