代码之家  ›  专栏  ›  技术社区  ›  Seph

恢复SQL表中未使用的空间

sql
  •  0
  • Seph  · 技术社区  · 15 年前

    我们最近将一个列的值从一个现有表移到了一个新表,这样它就可以驻留在一个单独的磁盘上。

    先前存在的列仍然保留,但已设置为空,因为某些历史应用程序在写入数据时仍可能引用此列。

    该表现在有10GB的未使用空间,即使在重建了聚集索引并运行了DBCC SHRINKDATABASE和SHRINKFILE之后,我们也无法回收这些空间。

    如何回收此表中的10GB未使用空间,因为新表单中的表在明年不会再增长10GB+,但是数据库中的其他表将继续增长,我们希望将此10GB返回到常规数据库池。

    我重复一遍,我们如何在特定的表中回收这10GB的未使用空间(假定该表不是空的)?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Zachary    15 年前

    是否尝试将表导入新表?这是检查是否有可用空间的最简单方法。如果您不想增加这个数据库(因为它可能会增加10 GB),您可以创建一个临时数据库并导入到那里,这样您就可以从最小大小的空数据库开始。此外,如果在数据库上启用了完全日志记录,则可能需要在尝试收缩数据库/收缩文件之前进行完全备份。