online book
检查点和日志的活动部分
检查点最大限度地减少数据库完全恢复时所必须执行的日志部分。在完全恢复时,必须执行两种操作: 日志可以包含修改记录,这些修改在系统停止前还没有刷新到磁盘上。必须前滚这些修改。
必须回滚与未完成的事务(没有 COMMIT 或 ROLLBACK 日志记录的事务)相关联的所有修改。 
检查点从当前数据库的高速缓冲存储器中刷新脏数据和日志页,以尽量减少在恢复时必须前滚的修改量。SQL Server 2000 检查点在当前数据库内执行下列进程: 将标记检查点起点的记录写入日志文件。
将为检查点记录的信息存储在检查点日志记录链内。将这条链起点的 LSN 写入数据库根页。
记录在检查点记录中的一条信息是第一个日志映像的 LSN,该映像必须存在以保证成功的数据库范围的回滚。这个 LSN 称为最小恢复 LSN (MinLSN),它是下面这些 LSN 中的最小 LSN: 
检查点起点的 LSN。
最旧的活动事务起点的 LSN。
最早的复制事务起点的 LSN,该事务尚未复制到所有订阅服务器。 
记录在检查点记录中的另一条信息是所有未完成的活动事务的列表。
如果数据库使用的是简单恢复模式,则删除新的 MinLSN 之前的所有日志记录。
将所有脏日志和数据页写入磁盘。
将标记检查点末端的记录写入日志文件。 
从 MinLSN 到日志末端的日志文件部分称为日志的活动部分。这是进行数据库完全恢复所需的日志部分。永远不能截断活动日志的任何部分。所有的日志截断都必须从 MinLSN 之前的日志部分进行。这是有两个活动事务的事务日志末端的简化版本。检查点记录已压缩成单个记录。LSN 148 是事务日志内的最后一条记录。在执行处理 LSN 147 时所记录的检查点时,Tran 1 已经提交而且 Tran 2 是唯一的活动事务。这就使 Tran 2 的第一条日志记录成为最后一个检查点上的活动事务的最旧日志记录。这使 LSN 142(Tran 2 的开始事务记录)成为 MinLSN。检查点在下列情况下发生: 当执行 CHECKPOINT 语句时。对连接所使用的当前数据库执行检查点操作。
当使用 ALTER DATABASE 更改数据库选项时。当数据库选项被更改时,ALTER DATABASE 对数据库执行检查点操作。
当 SQL Server 实例由于以下原因停止运行时: 
执行 SHUTDOWN 语句。
使用 SQL Server 服务控制管理器阻止运行数据库引擎实例的服务。 
上述方法之一对 SQL Server 实例中的每个数据库执行检查点操作。当 SQL Server 实例为减少恢复数据库所需的时间而在每个数据库内定期生成自动检查点时。 
自动检查点
SQL Server 2000 始终生成自动检查点。自动检查点的时间间隔基于日志内的记录数而非时间。自动检查点的时间间隔可能有很大的变化。如果数据库只做了很少的修改,自动检查点的时间间隔就长。如果修改了大量数据,自动检查点将经常发生。根据 recovery interval 服务器配置选项计算自动检查点的时间间隔。该选项指定 SQL Server 在系统重新启动时恢复数据库所用的最长时间。SQL Server 在执行恢复操作时估计自己能在恢复间歇内处理多少日志记录。自动检查点之间的间歇还取决于数据库使用的是否是简单恢复模式。 如果数据库使用的不是完全恢复模式或有日志记录的大容量恢复模式,则每当日志记录数达到 SQL Server 估计在 recovery interval 选项所指定的时间内能处理的记录数,就生成自动检查点。
如果数据库使用的是简单恢复模式,则每当日志中的记录数达到下面两个值中较小的那个,就生成自动检查点: 
日志的 70% 已满。
日志中的记录数达到 SQL Server 估计在 recovery interval 选项所指定的时间内能处理的记录数。 
如果数据库使用的是简单恢复模式,则自动检查点截断事务日志中没有使用的部分。如果数据库使用的完全恢复模式或有日志记录的大容量恢复模式,则自动检查点不截断日志。有关更多信息,请参见截断事务日志。长时间运行的事务
日志的活动部分必须包括所有未提交事务的每一部分。如果应用程序启动事务但不提交或回滚该事务,就会妨碍 SQL Server 前移 MinLSN。从而导致两种问题: 如果系统在事务执行了许多未提交的修改后关闭,以后重新启动时,恢复阶段所用的时间将比 recovery interval 选项指定的时间长得多。
因为不能截断 MinLSN 之后的日志部分,日志可能增长得非常大。这种情况即使在数据库使用的是简单恢复模式时也有可能发生,在简单恢复模式下,每次执行自动检查点操作时通常都截断事务日志。 
复制事务
日志的活动部分还必须包含所有被标记为复制但尚未复制到订阅服务器的事务。如果这些事务不是以即时方式复制,则它们还可以防止截断日志。