1. 程式人生 > 實用技巧 >C# 使用TransactionScope處理分散式事務

C# 使用TransactionScope處理分散式事務

官方文件:https://docs.microsoft.com/en-us/dotnet/api/system.transactions.transactionscope?view=netframework-4.8

需要新增引用System.Transactions;

使用前配置:

1. 開始->windows管理工具->元件服務

2. cmd->services.msc : 啟動Distributed Transaction Coordinator 服務

啟動時發生錯誤:不能在本地計算機啟動Distributed Transaction Coordinator 服務 --1073737712。

解決方法: 第一步: 右鍵屬性,檢視依存服務是否都已經啟動:

  第二步: 使用管理員開啟cmd : 依次輸入:

    msdtc -uninstall

    msdtc -install

    msdtc -resetlog

    net start msdtc

3.控制面板-> 系統和安全->防火牆->允許運用通過防火牆 :

4.資料庫連結伺服器右鍵-> 連線 (預設勾選)

程式碼:

try
            {
                //啟動一個分散式事務
                using (TransactionScope scope = new
TransactionScope()) { using (SqlConnection conn1 = new SqlConnection(connStr1)) { conn1.Open(); SqlCommand cmd1 = new SqlCommand(sql1, conn1); cmd1.ExecuteNonQuery(); }
using (SqlConnection conn2 = new SqlConnection(connStr2)) { conn2.Open(); SqlCommand cmd2 = new SqlCommand(sql2, conn2); cmd2.ExecuteNonQuery(); } scope.Complete(); } } catch (TransactionAbortedException ex) { }