我最近从一批生产数据库中删除了表数据,并且我一直在使用SSMS中的“收缩文件”功能缩小数据库文件。一些数据库将缩小超过50GB。我注意到这个过程需要很长时间才能完成,并且在此过程运行时没有取消按钮。我通过RDP远程连接所有数据库服务器,并不能保证在修剪过程中不会重新启动它们。
如果收缩过程正在运行且服务器重启电源,我是否会遇到数据库损坏?
答案 0 :(得分:2)
我认为这完全取决于断电时的动态页面。你可能会好的,但如果它是我的数据,我当然不想在这里掷骰子。
您可以使用DBCC SHRINKFILE
命令一次缩小文件,而不是仅运行单个缩小操作(尤其是不使用此UI)。由于此选项允许您设置目标大小,因此可以在短时间内重复运行命令。
虽然这会降低您的腐败风险,但它可能会导致其他伤害,例如:越来越分散。您可以先从重建索引中获得更好的里程,然后然后以truncateonly运行缩减文件。这将在重建之后清除文件的“结束”,可能会将所有数据一起移动到文件的开头。
更好的解决方案可能是在其自己的文件组中添加第二个数据文件,将所有索引重建到新文件组,然后缩小主文件将其缩小到仅生成的系统/元数据对象的大小那里。