Speicherplatz, den eine Tabelle verwendet, wird nicht vollständig freigegeben, nachdem Sie eine DELETE-Anweisung verwenden, um Daten aus der Tabelle in SQL Server zu löschen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 913399 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Ob # Fehler: 219514 (SQL Server 8.0)
Alles erweitern | Alles schließen

Problembeschreibung

Nachdem Sie eine DELETE-Anweisung bei Microsoft SQL Server verwenden, um Daten aus einer Tabelle zu löschen, stellen Sie möglicherweise fest, dass der Speicherplatz nicht vollständig freigegeben wird, den die Tabelle verwendet. Wenn Sie anschließend versuchen, Daten in der Datenbank einzufügen, wird folgende Fehlermeldung möglicherweise Ihnen angezeigt:
Konnte Speicherplatz für Objekt " TableName" in Datenbank " DatabaseName" nicht reservieren, da die "PRIMARY-Dateigruppe" voll ist.
HinweisTableName stellt den Name der Tabelle dar. DatabaseName stellt das Name der Datenbank dar, das die Tabelle enthält.

Ursache

Dieses Problems wird dadurch verursacht, dass SQL Server alle Pagen nur freigibt, die eine Heap-Tabelle verwendet, wenn die folgenden Bedingungen erfüllt sind:
  • Ein Löschvorgang für diese Tabelle tritt auf.
  • Eine Sperre auf Tabellenebene wird aufrechterhalten.
Hinweis: eine Heap-Tabelle ist alle Tabelle, die mit einem gruppierten Index nicht verbunden ist.

Wenn die Zuordnung von Seiten nicht aufgehoben wird, können die Seiten andere Objekte in der Datenbank nicht wiederverwenden.

Aufrechterhalten wird selbst wenn eine Sperre auf Tabellenebene, können Seiten jedoch nicht freigegeben werden, wenn Sie eine versioning-based Zeilenisolationsstufe in einer SQL Server 2005-Datenbank aktivieren. Versioning-based Isolationsstufen finden Weitere Informationen zu Zeile unter dem Thema "Using Row Versioning-based Isolationsstufe" in Online-Dokumentation zu SQL Server 2005.

Abhilfe

Wenden Sie eine der folgenden Methoden an, um dieses Problem umzugehen:
  • Enthalten Sie einen TABLOCK-Hinweis in der DELETE-Anweisung, wenn eine versioning-based Zeilenisolationsstufe nicht aktiviert ist. Verwenden Sie beispielsweise eine Anweisung, die folgend ähnelt:
    DELETE FROM <TableName> WITH (TABLOCK)
    Notiz&lt;TableName&gt; stellt den Name der Tabelle dar.
  • Verwenden Sie die Anweisung von TRUNCATE TABLE, zu um die alle Datensätze in der Tabelle Sie löschen. Verwenden Sie beispielsweise eine Anweisung, die folgend ähnelt:
    TRUNCATE TABLE <TableName>
  • Erstellen Sie einen gruppierten Index der Tabelle in einer Spalte. Unter dem Thema "Erstellen eines gruppierten Index" in Onlinedokumentation zu SQL Server finden Sie Weitere Informationen wie ein gruppierter Index einer Tabelle zu erstellt wird.

Status

Microsoft hat bestätigt, dass es sich dabei, um ein Problem bei den Microsoft-Produkten, die in dem Abschnitt "Betrifft" aufgeführt sind, handelt.

Eigenschaften

Artikel-ID: 913399 - Geändert am: Freitag, 2. November 2007 - Version: 1.2
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbexpertiseadvanced kbprb KB913399 KbMtde kbmt
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 913399
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com