com+分布式事务故障的处理

.Net2.0的TransactionScope类让事务处理更简单,更轻量级。但最近确遇到一个问题,在打开数据库连接的时候抛出“事务已显示提交或终止”或者“与基础事务管理器通信失败”的异常。刚开始还以为是.Net Remoting穿透防火墙存在安全性问题,但后来写了一个控制台的测试程序也是同样问题。
经测试有以下几种情况:
1.不加事务正常
2.数据库和应用程序在同一机器时正常
3.如果数据库是sql2000的,在打开第一个连接的时候就抛出异常;如果数据库是sql 2005则在打开第二个连接时才抛异常。(这就是sql2005的自动提升事务级别而与sql2000产生的区别)
4.如果是用企业服务EnterpriseServices的自动事务也提示同样的问题。

5.rpcping提示无法链接到服务器。

初步判断是安全设置问题,但是网上资料非常少,苦苦找寻1周,未见起色。但在一个偶然的事件中,让我发现了一点问题线索,顺着这条线索寻找,终于发现了问题的所在。

造成这个问题出现的是一次自动更新,还是个安全更新。这个更新为kb935348,属于中度安全更新。这个更新可能会造成一些莫名其妙的权限问题,如:无法使用 网络设置 。

该死的安全更新!!!!

这里还是推荐大家把xp的系统还原监视打开,以免出现问题后无法处理。

 

下面说一下分布式事务在XP系统中配置的一般方法:

 
1.确保系统中Distributed Transaction Coordinator服务保持启动,启动类型为自动,登录帐户为NT AUTHORITY/NetworkService
2.若使用了防火墙,需要将%systemroot%/system32/msdtc.exe文件加入到“例外”列表中。
3.打开控制面板=》管理工具=》组件服务=》展开组件服务目录根=》展开计算机目录根=》在我的电脑上右键选取属性 以打开配置页 =》选取msdtc页=》安全性配置
4.以下配置为选中状态:允许远程客户端、允许远程管理、允许入站、允许出站、不要求进行验证、启用xa事务。
5.选取com安全页=》访问权限 编辑限制  。将所有组或用户的允许远程访问、允许本地访问的复选框选中。
5.选取com安全页=》启动和激活限制 编辑限制  。将所有组或用户的允许本地启动、允许远程启动、允许本地激活、允许远程激活 的复选框选中。
­
注意:不要多打补丁,尽量使用原版的操作系统,xp系统打sp2包后不要轻易再进行更新。win2003打sp1包后不要再轻易进行更新。(.net2.0安全更新除外)
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值