Sql Server数据库事务介绍(一)---什么是事务

来源:互联网 发布:windows loader 3.1.1 编辑:程序博客网 时间:2024/05/16 10:42

      事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。

      举个例子,比如你去银行转帐就是一个事务。转帐可以简单的分为两个步骤,一是把钱从你的帐户中扣除,二是把钱存到你指定转帐的帐户中。这两个步骤就是一个事务,必须全部执行,或是全部不执行。如果从你帐户扣钱成功,但是转帐失败,那么你转帐的钱就没有了;如果是扣钱失败了,但是转帐成功了,那银行就亏了。

       事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。
       原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
       一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
       隔离:由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
      持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

      SQL Server 以下列事务模式运行。
      自动提交事务:每条单独的语句都是一个事务。
      显式事务:每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。
      隐式事务:在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。
      批处理级事务:只能应用于多个活动结果集 (MARS),在 MARS 会话中启动的 Transact-SQL 显式或隐式事务变为批处理级事务。当批处理完成时没有提交或回滚的批处理级事务自动由 SQL Server 进行回滚。

      Sql Server中有三种使用事务的方法,分别是Sql语句,SqlTransaction和TransactionScope,下面一节将分别介绍这三种事务的使用方法。http://blog.csdn.net/tjvictor/archive/2009/04/14/4074240.aspx