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

时间:2010-01-29 21:25:02

标签: sql-server oracle10g distributed linked-server

我正在尝试使用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冻结并关闭连接。

  

Msg 7399,Level 16,State 1,Line 3
      链接服务器“WSF08_CONTA_ORADATA_II”的OLE DB提供程序“OraOLEDB.Oracle”报告错误。提供商报告了意外的灾难性故障       Msg 7303,Level 16,State 1,Line 3       无法为链接服务器“WSF08_CONTA_ORADATA_II”初始化OLE DB提供程序“OraOLEDB.Oracle”的数据源对象。

发生了什么事?

* P.D:

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

1 个答案:

答案 0 :(得分:3)

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

  

当DTC充当XA兼容时   事务管理器, Oracle ,IBM DB / 2,   Sybase,Informix等   符合XA标准的资源管理器可以   参与交易的那个   DTC控制。

相关问题