SQL Server log_reuse_wait_desc LOG_BACKUP,事务日志已满,日志备份后不会变小

时间:2015-01-29 14:17:30

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

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

2 个答案:

答案 0 :(得分:1)

日志备份后,磁盘上的日志文件大小不会变小。其原因在于引擎假定它可能需要大小以供将来使用,并且增加日志文件是一项昂贵的(在时间上)操作。日志备份的作用是在日志文件中标记内部结构(称为"虚拟日志文件"或" VLF"),以供重用。您可以通过几种不同的方式检查VLF的状态:

  • DBCC SQLPERF('LOGSPACE')将向您显示内部使用的日志百分比
  • DBCC LOGINFO将在日志文件中显示有关每个VLF的信息。

所有这一切,如果你知道你不太可能在未来需要一个15 Gb的日志文件,你可以使用DBCC SHRINKFILE收缩文件。一般来说,VLF上有很多好的信息。 This blog post是一个好的开始。

答案 1 :(得分:0)

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

您可以在之后切换回完全恢复 - 但验证您是否正在执行完全恢复所需的定期计划日志备份。

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