这里有一些有趣的建议,这些建议似乎都显示出对日志备份工作方式的误解。日志备份包含自上次日志备份以来生成的所有事务日志,无论在过渡期间进行了什么完整备份或差异备份。停止日志备份或移至每日完整备份将不会影响日志备份的大小。一旦日志备份链启动,唯一影响事务日志的就是日志备份。
该规则的唯一例外是日志备份链是否已断开(例如,通过转到SIMPLE恢复模型,从数据库快照还原,使用BACKUP LOG WITH NO_LOG / TRUNCATE_ONLY截断日志),在这种情况下,是第一次日志备份将包含自上次完整备份以来的所有事务日志-重新启动日志备份链;或者,如果尚未启动日志备份链-首次切换为FULL时,您将以一种伪SIMPLE恢复模式进行操作,直到进行了第一次完全备份为止。
要回答您的原始问题,无需进入简单的恢复模型,您将不得不吸收所有事务日志的备份。根据您要执行的操作,您可以进行更频繁的日志备份以减小其大小,或者执行更多目标数据库。
如果您可以发布有关您正在进行的维护操作的信息,那么我可以帮助您进行优化。您是否有机会进行索引重建,然后执行收缩数据库来回收索引重建所使用的空间?
如果在进行维护时数据库中没有其他活动,则可以执行以下操作:
- 确保停止用户活动
- 进行最终日志备份(这使您可以恢复到维护开始为止)
- 切换到SIMPLE恢复模型
- 执行维护-日志将在每个检查点截断
- 切换到完整恢复模型并进行完整备份
- 照常继续
希望对您有所帮助-期待更多信息。
谢谢
[编辑:在讨论了完整备份是否可以改变后续日志备份的大小(不能这样做)之后,我整理了一篇综合性的博客文章,并提供了背景资料和能证明这一点的脚本。在https://www.sqlskills.com/blogs/paul/misconceptions-around-the-log-and-log-backups-how-to-convince-yourself/中进行检查]