代码之家  ›  专栏  ›  技术社区  ›  Jonathan Escobedo

使用SQL Server 2000为Oracle链接服务器执行分布式事务

  •  1
  • Jonathan Escobedo  · 技术社区  · 15 年前

    我正在尝试使用SQL Server 2000为单个Oracle链接服务器执行分布式事务,我想出了以下脚本:

    BEGIN DISTRIBUTED TRANSACTION;
      SET XACT_ABORT  off;
      GO
    
      SELECT MAX(DEPTNO)+1,
      FROM [WSF08_CONTA_ORADATA_II]..[SCOTT].DEPT
    
      SET XACT_ABORT  on;
      GO
    
    COMMIT TRANSACTION;
    

    一旦运行脚本,我会得到以下错误,然后是SQL Management Studio冻结和关闭连接。

    消息7399,级别16,状态1,第3行
    链接服务器“wsf08”的OLE DB提供程序“oraoledb.oracle”报告了一个错误。提供程序报告意外的灾难性故障。
    消息7303,级别16,状态1,第3行 无法为链接服务器“wsf08_conta_oradata_ii”初始化OLE DB访问接口“oraoleb.oracle”的数据源对象。

    怎么回事?

    * P.D:

    1. 我可以使用常规查询创建/更新/删除数据,但当 DISTRIBUTED TRANSACTION 涉及条款。
    2. 我们最近将服务器升级或链接到Oracle10g,值得一提的是,我没有遇到我们使用9i的问题。
    1 回复  |  直到 6 年前
        1
  •  3
  •   Remus Rusanu    15 年前

    要在分布式事务msdtc中注册SQL Server和Oracle,需要启用xa事务。见 Supporting XA Transactions :

    当故障诊断码与XA兼容时 事务管理器, 甲骨文公司 ,IBM DB/2, Sybase、Informix和其他 符合XA的资源管理器可以 参与以下交易: DTC控制。