这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果
--截断
BACKUP LOG CloudMonitor TO DISK='NUL'
--收缩
DBCC SHRINKFILE('CloudMonitor_log')
以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长。
SQL Server日志文件庞大收缩并非易事, 文章中提到:
由于首日志、尾日志和空间重复利用的原因,当备份日志后产生了日志截断,就会标记为可重复利用,但是只有文件尾部可用空间能被收缩。 这样就导致了日志文件的可用空间有98%却怎么收缩都没动静。通过备份+收缩连续操作尽可能让跳过“Active Log”
“收缩文件”尝试过,都无法达到效果:
1. 释放未使用的空间
2. 在释放未使用的空间前重新组织页
针对此问题,网上还有一些做法是通过修改为“简单恢复”模式进行收缩,但此方法不适用于AlwaysOn
当然,微软官方也对此问题作出来说明:
“在某些情况下,直到下一个日志截断后,才能收缩日志。”
官方文档: