回复人: j9988(j9988) ( ) 信誉:298  2004-03-12 11:11:00  得分:0 
 
 
  一.A.不用事务,关用SELECT 语句.是否可以分布式查询?   B.LINKSERVER 在做分布式更新事务时不能对本机操作.(就是不能环回分布式事务)   C.DBCC TRACEON (3604, 7300)--用跟踪看更详细错误信息.
  
   D.下载MS提供的DTCPing.exe 分装在两台机上,按README说明来运行它.看出错信息.
http://download.microsoft.com/download/complus/msdtc/1.7/nt45/en-us/DTCPing.exe二.两台机的MSDTC是否都打开了.三.MSDTC设置是否正确.
1.打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2.转至"组件服务管理工具"。
3.浏览至"启动管理工具"。
4.选择"组件服务"。
 a.展开"组件服务"树,然后展开"我的电脑"。
 b.右键单击"我的电脑",然后选择"属性"。
 C.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
网络管理
网络事务
    XA 事务
 e.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
5.单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
  所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
6.单击"确定"关闭"我的电脑"属性窗口。
四.
MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.五.
有的机由于各种原因),SQLOLEDB不能使用分布式事务,更改为"MSDASQL" 的ODBC方式联接.
使用RRAS而不是RAS.(控制面版--管理工具--远程服务管理器)
Check whether you are using Remote Access Server (RAS) to access remote servers. If so, make sure that you have implemented Routing RAS (RRAS). Linked server does not work on RAS because RAS allows only one way communication.
七.检查你的两台服务器是否在同一个域中.
如果不在同一个域中,是否建立可信任联接.八.如果是WIN2000,升级到SP4九.升级MDAC到2.6以上,最好是2.8.  
 

解决方案 »

  1.   

    参考:
    http://expert.csdn.net/Expert/topic/2835/2835706.xml?temp=.1126215
      

  2.   

    是因为SQLOLEDB提供程序不支持分布式事务,换一种方式就OK了!set  XACT_ABORT on
    set ANSI_NULL_DFLT_ON on
    set ANSI_WARNINGS on 
    BEGIN DISTRIBUTED TRANSACTION
    select *  from OPENDATASOURCE('MSDASQL',
    'DRIVER={SQL Server};SERVER=192.168.2.1;UID=sa;PWD=ruirui;').pubs.dbo.jobs
    commit tran错误 7391
    严重级别 16
    消息正文
    该操作未能执行,因为 OLE DB 提供程序 ''%1!'' 无法启动分布式事务。解释
    处理显式或隐性事务内的 INSERT、UPDATE 或 DELETE 语句时会出现该错误。这表明 OLE DB 提供程序不支持显式或隐性事务内数据修改语句所需的分布式事务。只有在数据修改语句本身是一个事务的情况下,才可对这样的提供程序执行该语句。对策
    验证指定的 OLE DB 提供程序是否支持分布式事务。如果提供程序不支持分布式事务,则将数据修改语句重写为不使用分布式事务。
      

  3.   

    http://expert.csdn.net/Expert/topic/2399/2399878.xml?temp=.9710962
      

  4.   

    谢谢 诸位 的热情帮助,
    mssql2k和oracle同一台机器,
    win2k升级sp4了,
    mdac也是2.8的了。
    本来是一切正常的系统,自从中了次毒后就不行了我遇到的问题和他们的不一样,我的系统本来能正常分布事务的。后来不知怎的不行了,返回的错误代码和他们的问题不同。
    btw,这个系统的不好重装win2k,机器是dell的服务器,带磁盘阵,不好装
      

  5.   

    问题解决,oracle8.1.6换成oracle9i了,问题就解决了,这是个陷阱,建议大家以后用mssql2k连接服务器访问oracle用到分布事务时最好使用9i的。但为什么开始时oracle8可以我也没查出原因
    环境:
    win2k advanced server with sp4
    ms sqlserver 2k with sp3
    msdac 2.8
    oracle 9.2i 
    连接服务器使用ms ole db provider for oracle
    这种环境下使用分布事务百试不爽还有一个技巧是:试验中失败后一定要重起dtc服务