事务日志简介

每个 SQL Server 2005 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。删除或移动事务日志以前,必须完全了解此操作带来的后果。

事务日志支持的操作

事务日志支持以下操作:

  • 恢复个别的事务。

  • 在 SQL Server 启动时恢复所有未完成的事务。

  • 将还原的数据库、文件、文件组或页前滚至故障点。

  • 支持事务复制

  • 支持备份服务器解决方案。

恢复个别的事务

如果应用程序发出 ROLLBACK 语句,或者数据库引擎检测到错误(例如失去与客户端的通信),就使用日志记录回滚未完成的事务所做的修改。

SQL Server 启动时恢复所有未完成的事务

当运行 SQL Server 的服务器发生故障时,数据库可能处于这样的状态:还没有将某些修改从缓存写入数据文件,在数据文件内有未完成的事务所做的修改。当启动 SQL Server 实例时,它对每个数据库执行恢复操作。前滚日志中记录的、可能尚未写入数据文件的每个修改。在事务日志中找到的每个未完成的事务都将回滚,以确保数据库的完整性。

将还原的数据库、文件、文件组或页前滚到故障点

在硬件丢失或磁盘故障影响到数据库文件后,可以将数据库还原到故障点。先还原上次完整数据库备份和上次差异数据库备份,然后将后续的事务日志备份序列还原到故障点。当还原每个日志备份时,数据库引擎重新应用日志中记录的所有修改,以前滚所有事务。当最后的日志备份还原后,数据库引擎将使用日志信息回滚到该点未完成的所有事务。

支持事务复制

日志读取器代理程序监视已为事务复制配置的每个数据库的事务日志,并将已设复制标记的事务从事务日志复制到分发数据库中。有关详细信息,请参阅事务复制的工作机制

支持备份服务器解决方案

备用服务器解决方案、数据库镜像和日志传送极大程度地依赖于事务日志。在日志传送方案中,主服务器将主数据库的活动事务日志发送到一个或多个目标服务器。每个辅助服务器将该日志还原为其本地的辅助数据库。有关详细信息,请参阅日志传送概述

在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库,从而将其继续前滚。有关详细信息,请参阅数据库镜像概述

事务日志特征

下列是 SQL Server 数据库引擎事务日志的特征:

  • 事务日志是作为数据库中的单独的文件或一组文件实现的。日志缓存与数据页的缓冲区高速缓存是分开管理的,因此可在数据库引擎中生成简单、快速和功能强大的代码。

  • 日志记录和页的格式不必遵守数据页的格式。

  • 事务日志可以在几个文件上实现。通过设置日志的 FILEGROWTH 值可以将这些文件定义为自动扩展。这样可减少事务日志内空间不足的可能性,同时减少管理开销。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)

  • 重用日志文件中空间的机制速度快且对事务吞吐量影响最小。