【问题标题】:SQL Server log_reuse_wait_desc LOG_BACKUP, Transaction log full, does not become smaller after log backupSQL Server log_reuse_wait_desc LOG_BACKUP,事务日志已满,日志备份后不会变小
【发布时间】:2015-01-29 14:17:30
【问题描述】:

我做了 2MB 小数据库的备份。 我有 15GB 的事务日志文件(LDF 文件)! 我的数据库处于完全恢复模式。 首先我尝试备份事务日志,但由于服务器上的空间而失败。 然后我成功地备份了事务日志,现在备份+事务日志的备份有9MB。 语句 SELECT name,log_reuse_wait_desc FROM sys.databases; 现在返回 NOTHING 而不是 LOG_BACKUP,这很好。但事务日志仍然是 15 GB。 我应该怎么做才能释放它?

【问题讨论】:

    标签: sql-server database-backups transaction-log


    【解决方案1】:

    如果您不定期备份事务日志,日志文件将继续增长。如果您愿意冒险丢失自上次备份以来的更改,请将数据库恢复模式更改为简单。我的经验是 SQL Server 在进行此更改后会在短时间内自动缩小日志文件。如果没有,您可能需要发出手动收缩。

    之后您可以切换回完全恢复 - 但请确认您正在执行完全恢复所需的定期日志备份。

    网上有很多关于恢复模型的资源。这是MSDN上关于Backup Under the Full Recovery Model的文章。

    【讨论】:

    • 嗨,保罗,感谢您抽出宝贵时间对我的问题进行了一些修改。我成功地备份了事务日志(它是 9MB)。我将恢复模式更改为简单。但是 Log 仍然是 15GB,虽然数据库只有 2MB。虽然是简单模型,但日志不会变小。我需要重新启动吗?
    • 您能指导我如何进行收缩吗?我必须缩小数据库或文件吗?
    • 嗨,Paul,现在在数据库中是 ClickMobile 的值 NOTHING,这很好。但是文件仍然是15GB?请问有什么办法吗?
    • Paul 你能帮我解决这个问题吗? LDF 文件仍然是 15GB:(
    • 您可能需要执行 1DBCC SHRINKFILE1 以使其在之后收缩。
    【解决方案2】:

    日志备份后磁盘上的日志文件大小不会变小。这样做的原因是引擎假设它可能需要达到这个大小以供将来使用,并且增长日志文件是一项昂贵的(就时间而言)操作。日志备份所做的是将日志文件中的内部结构(称为“虚拟日志文件”或“VLF”)标记为可重用。您可以通过几种不同的方式检查 VLF 的状态:

    • DBCC SQLPERF('LOGSPACE') 会以百分比形式显示内部使用了多少日志
    • DBCC LOGINFO 将在日志文件中显示有关每个 VLF 的信息。

    综上所述,如果您知道以后不太可能需要 15 Gb 日志文件,则可以使用 DBCC SHRINKFILE 缩小文件。一般来说,有很多关于 VLF 的好信息。 This blog post 是一个好的开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多