与几周前的这个问题密切相关,但答案没有讨论如何做肮脏的行为。情况如下:
我们现在在一个数据库中有 15 GB 的数据,但是应用程序中的一个日志记录错误肆虐并运行了高达 80 GB 的数据,从而为我们提供了大约 130 GB 的数据库文件。我们已经修复了这个错误,清除了受影响的表,我想收回一些空间,也许将数据库降到 40GB 左右。
我想这样做的最大原因是我们可以更轻松地将备份还原到虚拟测试实例上的较小驱动器。
我明白了:收缩是邪恶的,并且会将索引和磁盘文件碎片化。我被卖了。这是一次性事件。
那么怎样才能把痛苦降到最低呢?似乎我应该:
- 用于
DBCC SHRINKFILE (DataFile1, 40000);
瞄准 40 GB。 - 立即使用一些智能重新索引来重新组织和重建索引
- 对物理磁盘进行碎片整理
这会适当地减轻收缩的副作用吗?或者这只会在我申请邪恶联盟的时候结束?