C# 使用TransactionScope處理分散式事務
阿新 • • 發佈:2020-09-08
官方文件: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 = newTransactionScope()) { 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) { }