1

我正在尝试使用 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_CONTA_ORADATA_II”的 OLE DB 提供程序“OraOLEDB.Oracle”报告错误。提供商报告了意外的灾难性故障。
消息 7303,级别 16,状态 1,第 3 行无法初始化链接服务器“WSF08_CONTA_ORADATA_II”的 OLE DB 提供程序“OraOLEDB.Oracle”的数据源对象。

到底是怎么回事?

*PD:

  1. 我可以使用常规查询创建/更新/删除数据,但DISTRIBUTED TRANSACTION涉及子句时会出现错误。
  2. 我们最近将服务器升级或链接到 Oracle 10g,值得一提的是,我没有遇到我们使用 9i 的问题。
4

1 回答 1

3

要在分布式事务中注册 SQL Server 和 Oracle,MSDTC 需要启用 XA 事务。请参阅支持 XA 事务

当 DTC 充当符合 XA 的事务管理器时,Oracle、IBM DB/2、Sybase、Informix 和其他符合 XA 的资源管理器可以参与 DTC 控制的事务。

于 2010-01-29T21:51:35.253 回答