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

4
我有一个大小为270GB的SQL Server数据库,空间报告显示近91%的空间未使用。我知道未使用的空间是分配给特定对象的空间。应用程序团队对数据库进行了清除操作,但我们无法通过此操作获得空间。
我已经检查了表的索引碎片情况,但它们看起来很好。我还需要检查什么,以及我应该怎么做才能释放那个空间。该数据库未来不会使用那些空间。
据我所知,DBCC SHRINKFILE只释放未分配的空间。我已经阅读了关于DBCC CLEANTABLEDBCC SHRINK DATABASE的信息,但不确定是否足够执行。
如何有效地释放对象中未使用的空间。

这取决于不同的数据库,你必须指定你正在使用的SQL数据库。在SQLite中,它是VACUUM。在MySQL中,可能是OPTIMIZE TABLE。 - hanshenrik
如果您的数据库处于完整恢复模式,可以将其切换到简单恢复模式。然后收缩数据和日志文件,查看其大小是否减小。将数据库设置回完整恢复模式。 - zedfoxus
这与编程没有任何关系(这个站点 都是关于编程的),而是与数据库管理有关 - 因此它不是此处讨论的主题,属于dba.stackexchange.com,建议移动。 - marc_s
2个回答

1
根据我的理解,您需要先缩小文件大小,然后才能缩小数据库大小:
使用SQL Server Management Studio:
1. 缩小文件:右键单击数据库,选择“任务”,“收缩”,“文件”:然后选择一个新的文件大小值,略大于对话框中给出的“最小值”。
2. 缩小数据库:右键单击数据库,选择“任务”,“收缩”,“数据库”(选中“重新组织文件”复选框)。
通过这种方式,我能够减少磁盘报告中“未使用”空间的百分比。不过还有相当多的剩余空间(20%)... 我认为“重新组织”一些索引可能会有所帮助。

0

如果你的数据库中只有索引,那么在创建新的文件组并将所有索引移动到其中之后,可以删除旧的文件组。你可以使用 CREATE INDEX ... WITH DROP_EXISTING 命令来移动索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接