【问题标题】:Restored database taking massive amount of space恢复的数据库占用大量空间
【发布时间】:2018-07-16 09:39:37
【问题描述】:

我使用 1.5gb .bak 文件恢复了一个数据库。一切正常,除了恢复的数据库现在占用 64GB 空间。

我听说过缩小数据库和日志文件,但我应该如何找出占用这么多空间的内容以及我可以“缩小”哪些内容以使数据本身不会改变。在我的开发环境中,我需要这些生产备份数据。

我在进行恢复的开发环境中不需要完整的日志。如何找出占用更多空间的是数据还是日志?

我正在使用 SQL Server Management Studio 2017

【问题讨论】:

  • 备份文件通常被压缩,所以这是预期的行为,尝试压缩文件,它不会删除数据,它会释放已分配但未使用的空间。您还需要指定更多详细信息,因为您没有说明是日志还是数据文件占用了大部分空间,以及您是否需要在还原环境中使用完整日志。
  • 检查这是否对您有帮助:stackoverflow.com/questions/48617895/… 它处理类似的问题;缩小日志文件不会以任何方式损害数据。
  • 听起来您没有进行任何事务日志备份,如果您不备份和截断日志,它只会不断增长 - 特别是如果您正在执行大型操作,例如从表并重新填充它等。
  • 可以从恢复的数据库中删除表吗?尝试找出哪些表占用的空间最多,然后从中删除行,或者删除整个表...如果您最终删除了行,请执行收缩操作以减少使用的空间...
  • @bastos.sergio -- 你建议他删除底层数据以便在缩小数据库之前获得磁盘空间?这似乎不是很好的建议。你为什么认为他可以删除数据?此外,如果他在完全恢复模式下运行并且问题是日志文件很大,那么删除数据也无济于事。

标签: sql-server ssms shrink transaction-log


【解决方案1】:

也许是日志?

我建议您分析一下是否适合您。缩短备份时间:See More

BACKUP DATABASE XXXXX TO DISK 'C:\XXX.bak' WITH COPY_ONLY

您还可以在还原后将 Recovery Model 从 Full(默认)更改为 Simple。


然后SHRINK


老实说,我不确定是否所有这些都是必要的,但这对我来说可以减少空间。也许在改变恢复模式之前收缩更好,或者其中之一可能不是最佳实践。

【讨论】:

    【解决方案2】:

    您可以使用

    查看备份中数据库的文件大小
    restore filelistonly from disk = 'here_the_full_pass_to_your_backup_including_file_name'
    

    所以你可以计划它需要多少空间。

    如何找出占用更多空间的是数据还是日志?

    请用结果更新您的问题

    use MyDB;
    exec sp_spaceused;
    

    【讨论】:

      【解决方案3】:

      您的问题:“如何确定是数据还是日志占用了更多空间?”

      答案:这是一种方法。在 Sql Mgt 中右键单击您的数据库。 Studio,点击 Reports=>Standard Reports,然后点击磁盘使用情况。

      如果您不了解完整恢复模型和简单恢复模型之间的区别,我建议您阅读一下。还要了解缩小文件和自动增长的后果。收缩文件不会导致您丢失已提交的数据,但会在以后 Sql 需要自动增长文件时导致性能下降。

      如果您不需要完整恢复模型并且不关心自动增长,请将其更改为简单或批量记录,然后缩小日志文件。

      如果您不关心自动增长,那么您也可以收缩数据文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-01
        • 1970-01-01
        相关资源
        最近更新 更多