oledb 提供程序'SQL OLEDB'无法启动分布式事务 是什么错误

发布网友 发布时间:2024-09-26 17:55

我来回答

1个回答

热心网友 时间:2024-10-17 04:47

  在开发分布式数据库软件时,经常碰到下面的错误:
  服务器: 消息 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 oftware/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 oftware/Microsoft/MSDTC,然后删除 TurnOffRpcSecurity 项。

  但是实际上该方法基本上解决不了问题,经过长时间的反复实践,我终于按下面的方法解决了:
  (方法二)
  1、按照方法一的方法处理一遍,如果不行,再继续下面的方法
  2、安装windows 2003 sp1,安装好后,方法一中的第4步设置对话框和原来不一样了,选择“事务管理通讯”中的“不要求验证”
  3、最好安装好MDAC2.8

  4、安装netbios协议
  5、通过查找,在C:找到名为“hosts”的文件(没有扩展名),通常路径为C:/WINDOWS/system32/drivers/etc,将对方服务器的IP和计算机对应起来,

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com