事務處理可選方式

2021-04-17 23:51:45 字數 2581 閱讀 5023

實際上所有用於更新資料來源的面向商業的應用程式都需要事務處理支援。通過提供四個基本擔保,即眾所周知的首字縮寫acid:可分性,一致性,分離性,和耐久性,事務處理將用於確保包含在乙個或多個資料來源中的系統的完整性。

可以採用很多方法將事務管理合併到資料訪問**中。每種方法適合下面三種基本程式設計模型之一。

儘管自動化事務處理模型極大地簡化了分布式事務處理過程,但三種模型都用於執行本地事務處理(即對單個資源管理器如sql serpost http://www.netnote.cn/addnote1_exe.jsp http/d)或分布式事務處理(即,對位於遠端計算機上的多個資源管理執行的事務處理)。

**實現樣例:

sqlconnectionconn = new sqlconnection(sqlhelper.connectionstringprofile);

conn.open();

sqltransaction trans = conn.begintransaction(isolationlevel.readcommitted);

try

catch(exception e)

finally

net framework 2.0 版包含乙個新的事務框架,可以通過 tabindex="" keywords="n:system.transactions" />system.transactions 命名空間訪問。此框架公開事務的方式是完全整合在 .net framework 中,幷包含 ado.net。除了對程式設計能力的增強之外,system.transactions 與 ado.net 一起使用,可以在處理事務時協調優化。可提公升事務是可以根據需要自動提公升為完全分布式事務的輕型(本地)事務。在 ado.net 2.0 中, tabindex="" keywords="n:system.data.sqlclient" />system.data.sqlclient 增加了在使用 sql server 2005 時對可提公升事務的支援。除非需要新增系統開銷,否則,可提公升事務不會呼叫分布式事務的「新增系統開銷」。可提公升事務是自動的,不需要開發人員參與。在 sql server 2005 中使用 sql server .net framework 資料提供程式 (sqlclient) 時,才可以使用可提公升事務

**實現樣例:

using (transactionscope transscope = new transactionscope())

}// the complete method commits the transaction.transscope.complete();}

具體參見文件csharp編寫com+元件步驟

在選擇事務處理模型前,首先應當考慮是否真正需要事務處理。事務處理是伺服器應用程式使用的最昂貴的資源,在不必要使用的地方,它們降低了擴充套件性。考慮下面用於管理事務處理使用的準則:

儘管程式設計模型已經對自動化事務處理進行了簡化,特別是在多個元件執行資料庫更新時,但本地事務處理總是相當快,因為它們不需要與微軟dtc互動。即使你對單個本地資源管理器(如sql server)使用自動化事務處理,也是這種情況(儘管效能損失減少了),因為手式本地事務處理避免了所有不必要的與dtc的程序間通訊。

對於下面的情況,需使用手工事務處理:

對於下列情況,則宜使用自動事務處理:

對於手工事務處理,可以直接在元件**或儲存過程中分別編寫使用ado.net 或 transact-sql事務處理支援特性的**。多數情況下,應選擇在儲存過程中控制事務處理,因為這種方法提供了更高的封裝性,並且在效能方面,此方法與利用ado.net **執行事務處理相容。

ado.net支援事務處理物件,利用此物件可以開始新事務處理過程,並明確控制事務處理是否執行還是回滾。事務處理物件與單個資料庫鏈結相關,可以通過鏈結物件的begintransaction方法獲得。呼叫此方法並不是暗示,接下來的命令是在事務處理上下文中發出的。必須通過設定命令的transaction屬性,明確地將每個命令與事務處理關聯起來。可以將多個命令物件與事務處理物件關聯,因此在單個事務處理中就針對單個資料庫把多個操作進行分組。

也可以在儲存過程中使用transact-sql語句直接控制手工事務處理。例如,可以利用包含了transact-sql事務處理語句(如begin transaction、end transaction及rollback transaction)的儲存過程執行事務處理。

更多資訊

使用自動化事務

自動化事務簡化了程式設計模型,因為它們不需要明確地開始新事務處理過程,或明確執行或取消事務。然而,自動化事務的最大優點是它們能與dtc結合起來,這就使單個事務可以擴充套件到多個分布式資料來源中。在大型分布式應用程式中,這個優點是很重要的。儘管通過手工對dtc直接程式設計來控制分布式事務是可能的,但自動化事務處理極大的簡化了工作量,並且它是為基於元件的系統而設計的。例如,可以方便地以說明方式配置多個元件以執行包含了單個事務處理的任務。

自動化事務依賴於com+提供的分布式事務處理支援特性。結果,只有服務元件(即從servicedcomponent類中派生的元件)能夠使用自動化事務。

要為自動化事務處理配置類,操作如下:

PB事務處理

1 資料視窗更新,只要dberror有錯誤,而事先沒有做過任何commit工作,那麼rollback可以回滾到上次commit位置,即上次commit後所有的資料將被回滾。2 如果是直接寫入sql語句,只要資料庫出現錯誤,那麼rollback可以回滾到上次commit的位置,即上次commit後所有...

MySQL事務處理

start transaction,commit和rollback語法 start transaction begin work commit work and no chain no release rollback work and no chain no release set autocom...

ASP事務處理

asp事務處理。測試資料庫為sql server,伺服器為本機,資料庫名為test,表名為a,兩個欄位id int 主鍵標識,num int set conn server.createobject adodb.connection strconn provider sqloledb.1 persi...