日志截断主要用于阻止日志填充。 日志截断从 SQL Server 数据库的逻辑事务日志中删除非活动的虚拟日志文件,释放逻辑日志中的空间以便物理事务日志重用这些空间。 如果事务日志从不截断,它最终将填满分配给物理日志文件的所有磁盘空间。 但是,在截断日志前,必须执行检查点操作。 检查点将当前内存中已修改的页(称为“脏页”)和事务日志信息从内存写入磁盘。 执行检查点时,事务日志的不活动部分将标记为可重用。 此后,日志截断可以释放非活动部分。 有关检查点的详细信息,请参阅数据库检查点 (SQL Server)。
除非由于某些原因导致延迟,否则将在以下事件后自动发生日志截断:
- 简单恢复模式下,在检查点之后发生。
- 完整恢复模式或大容量日志恢复模式下,在日志备份之后发生(如果自上次备份后出现检查点)。
日志截断可能会由于多种因素而延迟。 如果日志截断延迟的时间较长,则事务日志可能会填满磁盘空间。 有关信息,请参阅可能延迟日志截断的因素和解决事务日志已满的问题(SQL Server 错误 9002)。