如何在SQL Server数据库中释放未使用的空间

时间:2015-12-24 01:40:09

标签: sql-server database-administration

我有一个大小为270GB的SQL Server数据库。在太空报告中,几乎91%的空间都显示为UNUSED。我知道未使用的空间是分配给特定对象的空间。应用程序团队对数据库执行了清除操作,但我们无法真正声明空间。

我已经检查了表上的索引碎片,但它们看起来很好..我还需要检查什么以及我应该做些什么才能释放该空间。 DB将来不会再使用该空间。

根据我的理解DBCC SHRINKFILE仅释放未分配的空间。我读过关于DBCC CLEANTABLEDBCC SHRINK DATABASE的内容,但不确定它是否足以执行。

如何有效地从对象中释放未使用的空间。

2 个答案:

答案 0 :(得分:0)

如果数据库中只有索引,则可以在创建新文件组并将所有索引移入其中后删除旧文件组。您可以使用CREATE INDEX ... WITH DROP_EXISTING移动索引

答案 1 :(得分:0)

所以据我所知,你首先需要缩小文件,然后你可以缩小数据库:

使用SQL Server Management Studio:

  1. 缩小文件:r-单击DB,'Tasks','Shrink','Files':然后选择一个稍大于对话框中给出的'Minimum is'值的新文件大小值。 / p>

  2. 收缩数据库:点击数据库,'任务','收缩','数据库'(勾选'重新组织文件复选框)

  3. 通过这种方式,我能够减少磁盘报告中“未使用”空间的百分比。虽然仍有相当一部分(20%)。我认为“重新组织”某些指数可能有所帮助。