劉建軍
(吉林省教育學院 基礎教育網(wǎng)絡信息中心,長春 130022)
數(shù)據(jù)庫事務(Database Transaction),是指為實現(xiàn)業(yè)務而作為單個邏輯工作單元執(zhí)行的一系列操作。事務具有acid特性,即原子性、一致性、隔離性、持久性。而自治事務則是為了實現(xiàn)某些特殊業(yè)務應用而違反事務一致性的特殊事務實現(xiàn)方式。
AT是由主事務(MT)即外部事務調(diào)用但是獨立于它的事務。在AT被調(diào)用執(zhí)行時,MT被掛起,在AT內(nèi)部,一系列的DML操作可以被執(zhí)行并且可以進行提交或回滾.由于AT的獨立性,它的提交和回滾并不影響MT的執(zhí)行效果。在AT執(zhí)行結(jié)束后,MT獲得控制權(quán),又可以繼續(xù)執(zhí)行。這樣就解決了在嵌套事務中,由于事務的原子性和一致性,子事務的提交或者回滾將決定于主事務的提交或回滾,而不能單獨提交獨立于主事務的該事務.即主要應用于嵌套事務中外部事務提交內(nèi)部事務回滾或外部事務回滾而內(nèi)部事務提交的應用。
(1)創(chuàng)建表seq_xh,用來生成類似序列的值,該值記錄在xh字段,bj字段是生成序列值為0,當該生成的序列被業(yè)務表使用,則更改為1。
Create table seq_xh(xh numeric(18,0),bj char(1));
seq_xh表新增有序數(shù)據(jù),表示序列正常生成,不因為主事務的回滾而回滾。
UseSeq表數(shù)據(jù)不變。同oracle一致。
(1)存儲過程ProGetXh(等價于oracle的AT)是獨立的,在它執(zhí)行時,主事務被暫停了.主事務的roll-back不影響該存儲過程的COMMIT。
(2)如果內(nèi)部自治事務rollback,外部事務commit,測試時候,則內(nèi)部自治事務成功回滾,不影響外部事務的數(shù)據(jù)提交。
服務器選項“remote proc transaction promotion”是在SQLServer2008上的一個新的選項。利用該選項可通過分布式事務處理協(xié)調(diào)器保護事務在服務器到服務器的操作過程。
如果該選項啟用時,則調(diào)用遠程存儲過程啟動分布式事務,并登記該事務。調(diào)用遠程存儲過程的一方為事務發(fā)起者,來負責控制事務的完成。當為連接發(fā)出后續(xù)提交或回滾語句時,主控方請求MS DTC在所涉及的計算機間管理控制分布式事務的完成。
如果該選項停用時,則調(diào)用鏈接服務器調(diào)的遠程存儲過程時將不會把本地事務提升為分布式事務。
Sqlserver2005支持嵌套事務,但不支持自治事務,可以理解其為假嵌套。而Sqlserver2008通過分布式事務處理協(xié)調(diào)器(MS DTC)事務保護服務器到服務器的操作過程,可以實現(xiàn)自治事務的處理。
[1]楊志國,等.SQL Server2005數(shù)據(jù)庫管理精講[M].北京:電子工業(yè)出版社,2007.
[2]Itzik Ben-Gan、張昱Microsoft SQL Server 2008技術(shù)內(nèi)幕:T-SQL語言基礎[M].北京:電子工業(yè)出版社,2009.
[3]Kalen Delaney:Microsoft SQl Server 2005技術(shù)內(nèi)幕:存儲引擎[M].北京:電子工業(yè)出版社,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技術(shù)內(nèi)幕:T-SQL查詢、等[M].北京:電子工業(yè)出版社,2010.