一、开启DTC服务

方式一

计算机—管理—服务—Distributed Transaction Coordinator—属性—开启

方式二

CMD命令子界面输入:net start msdtc

二、设置MSDTC

CMD命令界面输入:dcomcnfg.exe(或者:控制面板—管理工具—组件服务)

组件服务--计算机--我的电脑--Distributed Transaction Coordinator-本地DTC

三、

防火墙设置
设置例外程序“C:\Windows\System32\msdtc.exe”

四、数据库管理系统设置
数据库系统的设置,具体如下图。

右键 实例 属性

五、代码

DAL层代码

public static bool ExecuteSqlTranScope(List<SqlCommand> cmdList)
{
int rows = ;
try
{
using (System.Transactions.TransactionScope tsCope = new System.Transactions.TransactionScope())
{
foreach (SqlCommand cmd in cmdList)
{
cmd.Connection.Open();
PrepareCommand(cmd, cmd.Connection, null, CommandType.Text, cmd.CommandText, cmd.Parameters);
rows += cmd.ExecuteNonQuery();
}
tsCope.Complete();
}
if (rows > )
return true;
else
return false;
}
catch
{
return false;
}
}

调用

List<System.Data.SqlClient.SqlCommand> cmdList = new List<System.Data.SqlClient.SqlCommand>();

string connectStr = "data source=192.168.1.221;initial catalog=db;persist security info=True;user id=sa;password=123456;";

string connectStr2 = "data source=192.168.1.221;initial catalog=db;persist security info=True;user id=sa;password=123456;";

string sql = "INSERT INTO [SYS_USER_ADMIN]([FID],[LANGUAGEID],[LOGIN],[PASSWORD],[NAME],[CREATEMAN],[CREATEDATE],[MODIFYMAN],[MODIFYDATE],[UPDATETIME])VALUES (NEWID(),1,'TEST','TEST','TEST','',GETDATE(),'',GETDATE(),GETDATE())";

string sql2 = "INSERT INTO [SYS_USER_ADMIN]([FID],[LANGUAGEID],[LOGIN],[PASSWORD],[NAME],[CREATEMAN],[CREATEDATE],[MODIFYMAN],[MODIFYDATE],[UPDATETIME])VALUES (NEWID(),1,'TEST2','TEST2','TEST2','',GETDATE(),'',GETDATE(),GETDATE())";

cmdList.Add(new System.Data.SqlClient.SqlCommand(sql, new System.Data.SqlClient.SqlConnection(connectStr)));

cmdList.Add(new System.Data.SqlClient.SqlCommand(sql2, new System.Data.SqlClient.SqlConnection(connectStr2)));

SqlHelper.ExecuteSqlTranScope(cmdList);

其他错误情况:

错误1:(前提是程序和数据库 不在同一个服务器时)已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

需要设置程序服务器的DTC

错误2: 该事务管理器已经禁止了它对远程/网络事务的支持。 (异常来自 HRESULT:0x8004D024)

需要设置数据库服务器的DTC

错误3:与基础事务管理器的通信失败

需要设置程序服务器的DTC 防火墙问题

参考 http://wenku.baidu.com/link?url=ps4eSRpjF6TVy0tY7jCHSSOv1SmE4wzpDnxsBmy7C21FcFgb1mJySCCf82-fUASTD12f1C_7VhKIryEFCaWLA7ZS4UwRcMlOumWmY7KNISG

.NET分布式事务--TransactionScop的更多相关文章

  1. 群集中的MS DTC分布式事务协调器

    MS DTC在大多数SQL 服务器下都需要安装,若只是安装数据库引擎或Analysis 服务可不安装DTC.如果后需要使用分布式事务,则可在SQL Server群集安装完成后再安装DTC. 一.群集M ...

  2. 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)

    1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...

  3. 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

    在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...

  4. 已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一

    C# ASP.NET项目提示上述错误,在代码中使用分布式事务提示添加或修改到数据库的时候.添加数据到数据库时,不会设置实体类的主键字段.

  5. 【转】PostgreSQL分布式事务配置

    XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式 ...

  6. 分布式事务(一)两阶段提交及JTA

    原创文章,同步发自作者个人博客 http://www.jasongj.com/big_data/two_phase_commit/ 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或 ...

  7. 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?

    背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...

  8. 分布式事务操作之Spring+JTA

    什么是分布式事务?在网上找了一段比较容易理解的"定义". 分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算 ...

  9. java分布式事务

    1.现有方案 a.atomikos b.jotm 说明:spring3.0已将jotm的支持踢掉 2.使用atomikos时的pom.xml内容 <!-- 分布式事务支持-atomikos-be ...

随机推荐

  1. Lucene.Net+盘古分词器(详细介绍)(转)

    出处:http://www.cnblogs.com/magicchaiy/archive/2013/06/07/LuceneNet%E7%9B%98%E5%8F%A4%E5%88%86%E8%AF%8 ...

  2. jsp_属性范围_page

    page属性范围(使用pageContext表示,但是一般习惯于将这种范围称为page范围)表示将一个属性设置在本页上,页面跳转之后无法取得. 下面我们来写两个小例子测试一下: 1.在同一个jsp页面 ...

  3. linux ntp 服务器和用户端

    ntp 服务器 1.输入 rpm -qa|grep ntp 查看是否安装了ntp服务器 2.如果没安装 yum -y install ntp 安装 3.修改 /etc/ntp.conf 将原serve ...

  4. Xamarin开发Android笔记:背景操作

    使用Xamarin开发Android UI的时可能会遇到一些场景背景的问题,虽然可以利用多层或直接使用图片背景来完成,但这样会增加不少的资源消耗,最终导致内存溢出的情况.最好的方法还是利用内部方法或代 ...

  5. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)

    使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...

  6. ubuntu下使用nginx部署Laravel

    问题描述 Laravel是PHP下当今最受欢迎的web应用开发框架,github上start数远超第二名Symfony,以前我用这个框架做项目的时候通常就是扔到apache里面,然后配置.htacce ...

  7. C#设计模式(14)——模板方法模式(Template Method)

    一.引言 提到模板,大家肯定不免想到生活中的“简历模板”.“论文模板”.“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简 ...

  8. 曲演杂坛--EXISTS语句

    通常在我写EXISTS语句时,我会写成IF EXISTS(SELECT TOP(1) 1 FROM XXX),也没细细考究过为什么要这么写,只是隐约认为这样写没有啥问题,那今天就深究下吧! 首先准备测 ...

  9. [chrome插件分享] gitlab-tree 更方便的浏览Gitlab上的代码

    说明 经常玩Github的人肯定都知道大名鼎鼎的octotree吧,这款chrome插件可以说是浏览代码的神器,利用左侧的树形菜单可以很方便的打开目录.浏览文件等,加上Github全站本身使用了pja ...

  10. linux 进程监控

    linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程 ...