.NET分布式事务--TransactionScop
一、开启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的更多相关文章
- 群集中的MS DTC分布式事务协调器
MS DTC在大多数SQL 服务器下都需要安装,若只是安装数据库引擎或Analysis 服务可不安装DTC.如果后需要使用分布式事务,则可在SQL Server群集安装完成后再安装DTC. 一.群集M ...
- 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)
1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...
- 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务
在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...
- 已禁用对分布式事务管理器(MSDTC)的网络访问的解决方法之一
C# ASP.NET项目提示上述错误,在代码中使用分布式事务提示添加或修改到数据库的时候.添加数据到数据库时,不会设置实体类的主键字段.
- 【转】PostgreSQL分布式事务配置
XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式 ...
- 分布式事务(一)两阶段提交及JTA
原创文章,同步发自作者个人博客 http://www.jasongj.com/big_data/two_phase_commit/ 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或 ...
- 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?
背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...
- 分布式事务操作之Spring+JTA
什么是分布式事务?在网上找了一段比较容易理解的"定义". 分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算 ...
- java分布式事务
1.现有方案 a.atomikos b.jotm 说明:spring3.0已将jotm的支持踢掉 2.使用atomikos时的pom.xml内容 <!-- 分布式事务支持-atomikos-be ...
随机推荐
- Android性能优化方法(五)
有时候,我们的页面中可能会包含一些布局,这些布局默认是隐藏的,当用户触发了一定的操作之后,隐藏的布局才会显示出来.比如,我们有一个Activity用来显示好友的列表,当用户点击Menu中的“导入”以后 ...
- Web大文件下载控件更新-Xproer.HttpDownloader
资源下载:cab安装包(x86),cab安装包(x64),xpi安装包,crx安装包,nat安装包,exe安装包,开发文档,根证书,VC库, 更新时间:2016-08-19 版本号:1,2,56, ...
- [f]添加css3动画的方法
添加css3的一些动画的属性 使用方法: css3(oDiv[0], 'scale', 300)('rotate', 300);css3(oDiv[0], 'animation', '"dd ...
- C++语法之-------strcpy,memcpy,memset
1.strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#i nclude 功能:把src所指由NULL结束的字符串复制到dest所指的数组 ...
- 后台向前台输出 换行“\n”
MVC 中后台向前台输出 "\n"总是报错 因为后台向前台输出 "\n" 后,前台出现换行 eg: "这里是\n换行" var str=& ...
- 【原创】TP-LINK +ASUS(Tomato) 双无线路由设置WDS
主路由: TP-LINK TL-WR2041N 连接Internet,LAN IP地址:192.168.1.1,启用DHCP, 无线配置如下: 开启WDS功能,wireless为副路由的SSID,BS ...
- PropertyChangedCallback 只触发了一次?
在自定义的用户控件中,添加一个依赖属性,如下: public static readonly DependencyProperty ItemsSourceProperty = DependencyPr ...
- ASP.NET MVC 下拉列表使用小结
ASP.NET MVC中下拉列表的用法很简单,也很方便,具体来说,主要是页面上支持两种Html帮助类的方法:DropDownList()和DropDownListFor().这篇博文主要作为个人的一个 ...
- Javascript 异步加载详解(转)
本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...
- 解析ASP.NET WebForm和Mvc开发的区别
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...