VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > MongoDB >
  • sql语句大全之事务日志

事务日志
 
每个SQL Server 2005数据库都具有事务日志,用于记录所有事务以及每个事务对数据 库所做的修改。事务日志是数据库的关键组件,如果系统出现故障,它就是近期数据的唯 一源。
在创建数据库的时候,事务日志也会随着被创建。事务日志存储在一个单独的文件上。 在修改写入数据库之前,事务日志会自动记录对数据库对象所做的修改。这是SQL  Server 的一个重要的容错特性,它可以有效地防止数据库的损坏,维护数据库的完整性。
1. 事务日志支持的操作
 
事务日志支持以下操作:
 
y    恢复个别的事务     如果应用程序发出ROLLBACK语句,或者数据库引擎检测到错 误(例如失去与客户端的通信),就使用日志记录回滚未完成的事务所做的修改。
y   SQL Server启动时恢复所有未完成的事务   当运行SQL Server的服务器发生故障 时,数据库可能处于这样的状态:还没有将某些修改从缓存写入数据文件,在数 据文件内有未完成的事务所做的修改。当启动SQL Server实例时,它对每个数据库 执行恢复操作。前滚日志中记录的、可能尚未写入数据文件的每个修改。在事务 日志中找到的每个未完成的事务都将回滚,以确保数据库的完整性。
y    将还原的数据库、文件、文件组或页前滚到故障点          在硬件丢失或磁盘故障影响
到数据库文件后,可以将数据库还原到故障点。首先还原上一次的完整备份和差 异备份,然后将事务日志备份后续序列还原到故障点。当还原每个日志备份时, 数据库引擎 重新应用日志中记录的所有修改,以回滚所有事务。当最后的日志备 份还原后,数据库引擎将使用日志信息回滚到该点未完成的所有事务。
y    支持事务复制     日志读取器代理程序监视已为事务复制配置的每个数据库的事务
日志,并将已设复制标记的事务从事务日志复制到分发数据库中。
y 支持备用服务器解决方案 备用服务器解决方案、数据库镜像和日志传送高度依 赖于事务日志。在日志传送方案中,主服务器将主数据库的活动事务日志发送到

 
 
一个或多个目标服务器。每个辅助服务器将该日志还原为其本地的辅助数据库。
在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数 据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录 发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库, 从而将其继续前滚。有关详细信息,请参阅数据库镜像概述。
SQL Server Database Engine的事务日志具有如下特征:
 
y 事务日志是作为数据库中的单独的文件或一组文件实现的。日志缓存与数据页缓 存分开管理,从而使数据库引擎内的编码更简单、更快速和更可靠。
y    日志记录和页的格式不必遵守数据页的格式。
y 事务日志可以在几个文件上实现。通过设置日志的FILEGROWTH值可以将这些文 件定义为自动扩展。这样可减少事务日志内空间不足的可能性,同时减少管理开 销。
y    重用日志文件中空间的机制速度快且对事务吞吐量影响最小。
 
2. 事务日志提供容错的机制
 
在SQL Server中,事务是指一次完成的操作的集合,虽然一个事务中可能包含了很多 的SQL语句,但是在处理上,它们就像是一个操作一样。为了维护数据库的完整性,它们 必须彻底完成或者根本不执行。如果一个事务只是部分执行,则数据库将受到损坏。
SQL Server使用数据库的事务日志来防止没有完成的事务破坏数据。具体步骤如下:
 
用户执行修改数据库对象的任务。 当这个事务开始时,在事务日志中会记录一个事务开始标志,并将与此操作相关
的数据读入缓冲区。
  在日志中记录每一个操作,然后在日志中记录一个提交事务的标志。每一个事务
都会以这种方式记录在事务日志中,这些记录立即写到硬盘上。
  在缓冲区中修改响应的数据。这些数据一直在缓冲区中,直到检查点进程发生(定
期发生),才会写到硬盘上。同时,也会在事务日志中写入“所有已经完成的事务已经作 用于数据库”,即在事务日志中写入一个检查点标志。这个标志用于在数据库恢复过程中 确定哪个事务已经作用于数据库了。
  如果服务器在已经完成了这个事务(这些事务的操作信息已经写入事务日志中)
但还没有将缓冲区中的数据写入物理硬盘的情况下(检查点进程尚未触发)失效了或者在 服务器恰好处理了部分事务的情况下数据库服务器失效了,那么在这两种情况下,数据库 都不会被破坏。在服务器恢复正常后,SQL Server会开始一个恢复过程,检查数据库和事 务日志,如果事务日志中的事务还没有在数据库中生效,则会在此时作用于数据库(前滚); 如果发现部分事务还没有完成,则将这个事务在数据库中的作用去掉(回滚)。这个过程是 自动进行的。数据库完整性信息都由事务日志来完成,从而从本质上增强了SQL Server的 容错性能。

 

相关教程