在开发分布式数据库软件时,经常碰到下面的错误:
服务器: 消息 7391,级别 16,状态 1,行 6
该操作未能执行,因为 ole db 提供程序 'sqloledb' 无法启动分
布式事务。
[ole/db provider returned message: 不能在指定的事务处理器中
获得新事务。]
-----------------------------------------
服务器: 消息 8520,级别 20,状态 1,行 8
内部 msdtc 事务的提交失败: result code = 0x8004d019。
连接中断
-----------------------------------------
搜索了网上类似问题的解决方案,都建议采用下面的方法(方法一):
1、运行 regedt32,浏览至 hkey_local_machine oftwaremicrosoftmsdtc。
添加一个 dword 值 turnoffrpcsecurity,值数据为 1。
2、重启ms dtc服务。
3、打开“管理工具”的“组件服务”。
a. 浏览至启动管理工具。
b. 选择组件服务。
c. 展开组件服务树,然后展开我的电脑。
d. 右键单击我的电脑,然后选择属性。
在 msdtc 选项卡中,确保选中了下列选项:
网络 dtc 访问 网络管理 网络事务xa 事务
另外,dtc 登录帐户一定要设置为nt authoritynetworkservice。4、重启ms dtc服务。
5、再次运行 regedt32,浏览至 hkey_local_machine oftwaremicrosoftmsdtc,然后删除 turnoffrpcsecurity 项。
但是实际上该方法基本上解决不了问题,经过长时间的反复实践,我终于按下面的方法解决了:
(方法二)
1、按照方法一的方法处理一遍,如果不行,再继续下面的方法
2、安装windows 2003 sp1,安装好后,方法一中的第4步设置对话框和原来不一样了,选择“事务管理通讯”中的“不要求验证”
3、最好安装好mdac2.8
3、通过查找,在c:找到名为“hosts”的文件(没有扩展名),通常路径为c:windowssystem32driversetc,将对方服务器的ip和计算机对应起来,参考如下:
========================================
# copyright (c) 1993-1999 microsoft corp.
#
# this is a sample hosts file used by microsoft tcp/ip for windows.
# www.knowsky.com
# this file contains the mappings of ip addresses to host names. each
# entry should be kept on an individual line. the ip address should
http://www.bkjia.com/phpjc/631241.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/631241.htmltecharticle在开发分布式数据库软件时,经常碰到下面的错误: 服务器: 消息 7391,级别 16,状态 1,行 6 该操作未能执行,因为 ole db 提供程序 'sqlol...
