首页 > 开发 > 综合 > 正文

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

2024-07-21 02:05:52
字体:
来源:转载
供稿:网友

本文属spanzhang原创,其blog地址为:http://blog.csdn.net/spanzhang。引用或转贴请注明出处,谢谢!!

服务器: 消息 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 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 项。


微软提供的原文:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;329332
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表