我正在尝试使用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:
DISTRIBUTED TRANSACTION
子句时会出现错误。答案 0 :(得分:3)
要在分布式事务中注册SQL Server和Oracle,MSDTC需要启用XA事务。见Supporting XA Transactions:
当DTC充当XA兼容时 事务管理器, Oracle ,IBM DB / 2, Sybase,Informix等 符合XA标准的资源管理器可以 参与交易的那个 DTC控制。