MS SQLServer OLEDB分布式事务无法启动的一般解决方案

服务器: 消息 7391,级别 16,状态 1,行 6
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分
布式事务。
[OLE/DB provider returned message: 不能在指定的事务处理器中
获得新事务。]
---------------------------------------------------------------------------------------------
服务器: 消息 8520,级别 20,状态 1,行 8
内部 MSDTC 事务的提交失败: Result Code = 0x8004d019。

连接中断
---------------------------------------------------------------------------------------------

这个问题,我想做过MS SQLServer分布式数据库系统的人都遇到过。简单的时候是服务没启动,135端口没打开之类的。但等你将这些东西都搞定后仍然不行的时候,你就会感到绝望并且怀疑是不是MS根本就不能使用OLEDB来启动分布式事务了。其实,很多时候一个问题在出现的时候会让你觉得神秘,但解决起来其实很简单。下面就是答案:

1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC。
添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
2、重启MS DTC服务。
3、打开“管理工具”的“组件服务”。

    a. 浏览至"启动管理工具"。
    b. 选择"组件服务"。
    c. 展开"组件服务"树,然后展开"我的电脑"。
    d. 右键单击"我的电脑",然后选择"属性"。
     在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问
	网络管理
	网络事务
XA 事务
另外,"DTC 登录帐户"一定要设置为"NT Authority/NetworkService"。
4、重启MS DTC服务。
5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC,然后删除 TurnOffRpcSecurity 项。

微软提供的原文: http://support.microsoft.com/default.aspx?scid=kb;zh-cn;329332

如果这些你都做了,但是还不行,就请你的防火墙管理员将端口都打开测试一下吧。如果还不行,就检查一下你的连接服务器设置,在“服务器选项(Server Options)”里面,将“使用远程排序规则(Use Remote Collation)勾掉。


本文属Span Zhang(张友邦)原创,转载请注明出处。

中国原创分形艺术、中国原创分形软件第一站

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值