多次导出SQL Server数据库后进行清理

时间:2019-02-07 19:02:19

标签: sql sql-server shrink

我的客户需要将其生产数据库迁移到新服务器。数据库的大部分是审核消息。该文件最初约为200GB。在这种情况下,为了最大程度地减少停机时间,我一直在做的工作是将备份迁移到新服务器,然后截断审核表。这样可以保证切换后的所有内容都是新数据,并且一旦不再使用旧数据库,就可以将Audit表的内容导出到新数据库中,以确保保留所有审核消息。

这里的问题是我以某种方式运行了5次导出作业,现在数据库已超过1TB。我设法从表中删除了所有重复的数据,但是文件本身仍然超过1TB。

有人对如何清理这个烂摊子有建议吗? “收缩”选项是最佳途径,还是有更好的选择?

1 个答案:

答案 0 :(得分:1)

这就是我要做的:

  • 使用DBCC SHRINKFILE收缩单个文件而不是整个数据库

  • 使用ALTER INDEX REORGANIZE减少索引碎片(即dbo.MyTable REORGANIZE;的ALTER INDEX MyIndex;)。否则,您将有可能在尝试收缩索引时炸毁数据库

  • 最后,我将收缩日志文件

以此顺序进行操作应该会给您带来最好的效果,而影响最小。