【问题标题】:Recover unused space in SQL Table恢复 SQL 表中未使用的空间
【发布时间】:2010-10-16 02:18:49
【问题描述】:

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

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

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

我们如何回收这个表中这 10GB 的未使用空间,因为新形式的表预计明年不会再增长 10GB+ 但是数据库中的其他表将继续增长,我们希望返回这个10GB 到通用数据库池。

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

【问题讨论】:

  • 与编程无关...属于服务器故障或超级用户

标签: sql


【解决方案1】:

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

【讨论】:

  • 是的,这就是我们决定采用的方式,我们只需要注意任何 FK 约束和类似情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多