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