Problembeschreibung
Angenommen, Sie verfügen über eine Tabelle, die eine LOB-Spalte (Großobjekt) in Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 oder SQL Server 2014 enthält. Wenn Sie die LOB-Spalte mit einer kleineren Lob-Datengröße aktualisieren und versuchen, den nicht verwendeten Speicherplatz mithilfe der folgenden Methoden wieder freizugeben:
-
DBCC SHRINKDATABASE/DBCC SHRINKFILE
-
ALTER INDEX REORGANIZE with (LOB_COMPACTION = ein)
In diesem Fall kann der ungenutzte Speicherplatz nicht freigegeben werden.
Fehlerbehebung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 2 für SQL Server 2012 SP2 /en-us/help/2983175
Kumulatives Update 11 für SQL Server 2012 SP1 /en-us/help/2975396
Kumulatives Update 13 für SQL Server 2008 R2 SP2 /en-us/help/2967540
Kumulatives Update 2 für SQL Server 2014 /en-us/help/2967546
Kumulatives Update 17 für SQL Server 2008 SP3 /en-us/help/2958696
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Schauen Sie sich die neuesten kumulativen Updates für SQL Server an:
Problemumgehung
Verwenden Sie die folgenden Problemumgehungen, um dieses Problem zu umgehen:
-
Exportieren Sie alle Zeilen in eine neue Tabelle, und verschieben Sie die Zeilen zurück. Dadurch werden die LOB-Daten neu organisiert und der ungenutzte Speicherplatz freigegeben.
-
Verwenden Sie DBCC SHRINKFILE mit der Option leere Datei, um alle Daten in eine neu hinzugefügte Datendatei zu verschieben und dann alte Datendatei zu entfernen. Dadurch werden die LOB-Daten dort neu organisiert, indem der ungenutzte Speicherplatz freigegeben wird.
Weitere Informationen
Im folgenden Beispiel wird der ungenutzte Speicherplatz mithilfe des TSQL-Befehls sp_spaceused "table_name" vor und nach dem Aktualisieren der LOB-Spalte mit kleinerer LOB-Daten: vor dem Aktualisieren angezeigt:
Namen |
Zeilen |
reserviert |
Daten |
index_size |
ungenutzte |
table_name |
1000 |
261072 KB |
261056 KB |
16 KB |
0 KB |
Nach der Aktualisierung:
Namen |
Zeilen |
reserviert |
Daten |
index_size |
ungenutzte |
table_name |
1000 |
261072 KB |
199672 KB |
16 KB |
61384 KB |
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.