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

            }

 

posted @ 2020-09-08 12:00  陈鹏昱Chen  阅读(235)  评论(0编辑  收藏  举报