【问题标题】:Cleaning up after exporting SQL Server database multiple times [closed]多次导出 SQL Server 数据库后进行清理[关闭]
【发布时间】:2019-02-07 19:02:19
【问题描述】:

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

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

有人对如何清理这个烂摊子有什么建议吗? Shrink 选项是最佳途径,还是有更好的途径?

【问题讨论】:

  • 如果没有任何关于数据库类型的信息,没有人可以帮助您。
  • 嗯,我想这回答了这个问题 :) 我对此知之甚少,无法说出它是什么类型的数据库......
  • @ChristopherCass - 我想他的意思是,这是 SQL Server 吗? MySQL?访问?您使用的是什么应用程序?
  • 啊,是SQL Server。 2012
  • 我觉得奇怪的是 1) 您不想将以前的审核保留在本地。如果您稍后要卸载它们,那么它们首先是本地的有什么意义?为什么不使用 CDC 或其他方式设置审计服务器? 2) 这是 customer 的迁移,I would stop and read this including the links contained within

标签: sql sql-server shrink


【解决方案1】:

这是我要做的:

  • 使用 DBCC SHRINKFILE 收缩单个文件而不是整个 DB

  • 使用 ALTER INDEX REORGANIZE 减少索引碎片(即 ALTER INDEX MyIndex ON dbo.MyTable REORGANIZE;)。否则,当您尝试缩小索引时,您将面临炸毁数据库的风险

  • 最后,我会缩小日志文件

按此顺序执行此操作应该会给您带来最好的结果和最小的影响

【讨论】:

    猜你喜欢
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多