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) { }