刘建军
(吉林省教育学院 基础教育网络信息中心,长春 130022)
数据库事务(Database Transaction),是指为实现业务而作为单个逻辑工作单元执行的一系列操作。事务具有acid特性,即原子性、一致性、隔离性、持久性。而自治事务则是为了实现某些特殊业务应用而违反事务一致性的特殊事务实现方式。
AT是由主事务(MT)即外部事务调用但是独立于它的事务。在AT被调用执行时,MT被挂起,在AT内部,一系列的DML操作可以被执行并且可以进行提交或回滚.由于AT的独立性,它的提交和回滚并不影响MT的执行效果。在AT执行结束后,MT获得控制权,又可以继续执行。这样就解决了在嵌套事务中,由于事务的原子性和一致性,子事务的提交或者回滚将决定于主事务的提交或回滚,而不能单独提交独立于主事务的该事务.即主要应用于嵌套事务中外部事务提交内部事务回滚或外部事务回滚而内部事务提交的应用。
(1)创建表seq_xh,用来生成类似序列的值,该值记录在xh字段,bj字段是生成序列值为0,当该生成的序列被业务表使用,则更改为1。
Create table seq_xh(xh numeric(18,0),bj char(1));
seq_xh表新增有序数据,表示序列正常生成,不因为主事务的回滚而回滚。
UseSeq表数据不变。同oracle一致。
(1)存储过程ProGetXh(等价于oracle的AT)是独立的,在它执行时,主事务被暂停了.主事务的roll-back不影响该存储过程的COMMIT。
(2)如果内部自治事务rollback,外部事务commit,测试时候,则内部自治事务成功回滚,不影响外部事务的数据提交。
服务器选项“remote proc transaction promotion”是在SQLServer2008上的一个新的选项。利用该选项可通过分布式事务处理协调器保护事务在服务器到服务器的操作过程。
如果该选项启用时,则调用远程存储过程启动分布式事务,并登记该事务。调用远程存储过程的一方为事务发起者,来负责控制事务的完成。当为连接发出后续提交或回滚语句时,主控方请求MS DTC在所涉及的计算机间管理控制分布式事务的完成。
如果该选项停用时,则调用链接服务器调的远程存储过程时将不会把本地事务提升为分布式事务。
Sqlserver2005支持嵌套事务,但不支持自治事务,可以理解其为假嵌套。而Sqlserver2008通过分布式事务处理协调器(MS DTC)事务保护服务器到服务器的操作过程,可以实现自治事务的处理。
[1]杨志国,等.SQL Server2005数据库管理精讲[M].北京:电子工业出版社,2007.
[2]Itzik Ben-Gan、张昱Microsoft SQL Server 2008技术内幕:T-SQL语言基础[M].北京:电子工业出版社,2009.
[3]Kalen Delaney:Microsoft SQl Server 2005技术内幕:存储引擎[M].北京:电子工业出版社,2007.
[4]Itzik Ben-gan.Microsoft®SQL Server®2008 T-SQL Fundamentals[M].Washington:Microsoft press,2009.
[5]Itzik Ben-Gan),Lubor Kollar,Dejan Sarka.Microsoft SQL Server 2008技术内幕:T-SQL查询、等[M].北京:电子工业出版社,2010.