当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 解决windows 2003+Sql2000中OLEDB分布式事务无法启动的解决方案

MSSQL
正确配置和使用SQL mail
关于DTS导入导出丢失默认值等对象
TOP N 和SET ROWCOUNT N 哪个更快
如何在视图中使用ORDER BY短语
如何区分大小写比较?
如何将作为字符串保存的IP地址变为二进制数值?
如何随机选取n条记录或者对记录作随机排序?
SQL脚本生成的一些BUG
如何使Microsoft SQL Server的日志文件不会增大?
利用事务日志来恢复Update、Delete误操作引起的数据丢
关于MSSQL占用过多内存的问题
SQL Server非正常删除日志文件(ldf)恢复方法
处理孤立用户的存储过程
1069错误(由于登录失败而无法启动服务)解决方法
SQL Server 7.0数据库的六种数据移动方法
利用SQL Server的扩展属性象access一样显示列的注释
Stored Procedure(存储过程)编写经验和优化措施
更新你的联机丛书
关于SQL Server中几个未公布的访问注册表的扩展存储过
存储过程替换text,ntext列中的字符串

MSSQL 中的 解决windows 2003+Sql2000中OLEDB分布式事务无法启动的解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 116 ::
收藏到网摘: n/a

 

在开发分布式数据库软件时,经常碰到下面的错误:
服务器: 消息 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
3、通过查找,在C:找到名为“hosts”的文件(没有扩展名),通常路径为C:\WINDOWS\system32\drivers\etc,将对方服务器的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
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1 localhost
192.168.1.2 中心
192.168.1.3 西站
192.168.106.35 信息中心2
=============================================
一定要将每台服务器的hosts文件都修改好
通过以上办法,我的分布式就可以正常运行了,速度也非常快