分布式事務

2021-06-16 08:40:40 字數 1757 閱讀 1903

transactionscope是.net framework 2.0版本後,新增了乙個命名空間using system.transactions。它的用途是為資料庫訪問提供了乙個「輕量級」[區別於:sqltransaction]的事務

transactionscope 的 using 語句塊中將自行釋放並回滾該事務,transactionscope 物件都將被自動呼叫dispose()釋放。

您可以構建出乙個事務模型,這個模型可以對異常進行處理,執行結束後會 自行清理,此外,它還可以對命令的提交或回滾進行管理。

如下://開事務

using (transactionscope scope = new transactionscope(transactionscopeoption.requiresnew)) //總是建立新事務

{

//事務處理

//提交事務

scope.complete();

4、重啟iis伺服器。

連線字串關鍵字(enlist)

sqlconnection.connectionstring 屬性支援關鍵字 enlist,該關鍵字指示 system.data.sqlclient 是否將檢測事務上下文並自動在分布式事務中登記連線。 如果 enlist=true,連線將自動在開啟的執行緒的當前事務上下文中登記。 如果 enlist=false,sqlclient 連線不會與分布式事務進行互動。 enlist 的預設值為 true。 如果連線字串中未指定 enlist,若在連線開啟時檢測到乙個,連線將自動在分布式事務中登記。  

server=(local)sql2005;database=northwind;integrated security=sspi;auto-enlist=false

上面所看到的示例中我們使用了transactionscope的requiresnew 設定。transactionscope有三種模式:

transactionscopeoptions

描述 required

如果已經存在乙個事務,那麼這個事務範圍將加入已有的事務。否則,它將建立自己的事務。

requiresnew

這個事務範圍將建立自己的事務。

suppress

如果處於當前活動事務範圍內,那麼這個事務範圍既不會加入氛圍事務 (ambient transaction),也不會建立自己的事務。當部分**需要留在事務外部時,可以使用該選項。

您可以在**的任何位置上隨是檢視是否存在事務範圍,具體方法就是檢視 system.transactions.transaction.current 屬性。如果這個屬性為「null」,說明不存在當前事務。

若要更改 transactionscope 類的預設設定,您可以建立乙個 transactionoptions 物件,然後通過它在 transactionscope 物件上設定隔離級別和事務的超時時間。transactionoptions 類有乙個 isolationlevel 屬性,通過這個屬性可以更改隔離級別,例如從預設的可序列化 (serializable) 改為readcommitted,甚至可以改為 sql server 2005 引入的新的快照 (snapshot) 級別。(請記住,隔離級別僅僅是乙個建議。大多數資料庫引擎會試著使用建議的隔離級別,但也可能選擇其他級別。)此 外,transactionoptions 類還有乙個 timeout 屬性,這個屬性可以用來更改超時時間(預設設定為 1 分鐘)。

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...