博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

手上的项目快接近尾声了,这二天准备切换旧系统时,需要与其它数据库做一些同步的工作,以前的系统在中间层使用COM+组件做数据同步,这次本想偷 个懒,使用链接服务器做个视图,使用相应的触发器来同步,在提交数据时,总时报:“链接服务器"192.168.2.10"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持”错误。。花了半天时的时间,总算把问题解题了,现总结一下,希望对大家有所帮助。

   主要的问题还是MSDTC的设置,找了一篇如下的文章,很帮助:

  关于“COM+ 无法与 Microsoft 分布式事务协调程序交谈

出现了“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”的错误,一个很叫人郁闷的错误,找了很多资料,基本的解决方法整理如下:
  1. 单击“开始”,指向“控制面板”,然后单击“添加/删除程序”。
  2. 单击“添加/删除 Windows 组件”。
  3. 选择“应用程序服务器”,然后单击“详细信息”。
  4. 选择“启用网络 DTC 访问”,然后单击“确定”。
  5. 单击“下一步”。
  6. 单击“完成”。
  7. 停止分布式事务协调器服务,然后重新予以启动。
  8. 停止参与分布式事务的任何资源管理器服务(如 Microsoft SQL Server 或 Microsoft Message Queue Server),然后重新予以启动。
  9.检查MSDTC设置是否正确.
   1)打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
   2)转至"组件服务管理工具"。
   3)浏览至"启动管理工具"。
   4)选择"组件服务"。
   a.展开"组件服务"树,然后展开"我的电脑"。
   b.右键单击"我的电脑",然后选择"属性"。
   c.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
   网络管理
   网络事务
   XA 事务
   d.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
   5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
   所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
   6)单击"确定"关闭"我的电脑"属性窗口。
  10.关闭网络防火墙(或者开放相应的端口135)

1. 先在程序計算機上設置MSDTC:控制面板->管理工具->組件服務->我的電腦->右jiang->屬性 ->MSDTC->安全配置(Security Configuration)->打開Network DTC Access 同時打上
Allow Inbound ,Allow Outbound ,No Authentication Required,Enable Transaction Internet Protocol[TIP] Transaction
2.請在遠程數據庫計算機上做1同樣的事情

3.雙方計算機重新啟動MSDTC

4.這樣就可以了

其它的一些资料:

分布式事务在Windows 2003的配置比较麻烦,原来我就碰到过怎么设置也启动不了的情况,近日在别人指导下弄好了,顺便写个配置步骤,希望对大家有用
1、 添加/删除程序中,选择添加Windows组件,选择应用程序服务器,选择启用分布式事务网络访问
2、 在DTC所涉及的所有服务器中,启用NETBIOS,确保所有服务器能相互ping通对方,具体为修改所有服务器中的C:\Windows\System32\Drivers\etc\hosts文件(具体可参考hosts文件的内部帮助)。[注意]必须修改所有的服务器中的hosts文件
3、 禁用SQL Server 的DTC RPC安全,具体为在HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC下新建一个DWord键,名称为TurnOffRpcSecurity,设置其值为1
4、 重启MSDTC
5、 关闭网络防火墙(或者开放相应的端口)
6、 参考:
http://www.support.microsoft.com/?kbid=555017&SD=tech
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;306843
http://support.microsoft.com/kb/250367/


二台数据库服务器的都得这么设置就可以了。