Mittwoch, 4. Juli 2012

SQL Server - Unbenutzten Speicherplatz wieder freigeben nach 'Drop Column'

Nachdem man eine Tabelle theoretisch verkleinert hat, indem man z.B eine Spalte gelöscht hat oder den Datentyp einer Spalte geändert hat, hat das für den belegten Speicherplatz erstmal null Effekt. Es ist für den SQL Server nur eine Änderung der Metadaten. Dies kann man überprüfen indem man sich z.B. die Ausgaben von
DBCC SHOWCONTIG( tablename)
oder
exec sp_spaceused 'tablename'
anschaut.
Wenn die entsprechende Tabelle einen Clustered Index hat, kann man mit
DBCC DBREINDEX( tablename)
dafür sorgen, dass der überflüssige Speicher freigegeben wird. Weitere Infos dazu findet man hier: http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/08/27/alter-table-drop-column-does-not-reclaim-the-space-the-column-took-it-s-a-meta-data-change-only.aspx