views:

101

answers:

1

Hello Im using SQL Server with distributed transaction on local Oracles Linked servers, as the following :

GO
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;

So when I run this script I get the follows errors and SQL Server freeze, stops and disconnect me.

Msg 7399, Level 16, State 1, Line 3
The OLE DB provider "OraOLEDB.Oracle" for linked server "WSF08_CONTA_ORADATA_II" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7303, Level 16, State 1, Line 3 Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "WSF08_CONTA_ORADATA_II".

I'm doing something wrong?

*PD: I can do CRUDS on the Oracle via SSMS without the phrase "BEGIN DISTRIBUTED TRANSACTION; " on the query.. WHY?.. Im using SQL Server 2000 as FrontSide Server and Oracle 10g on BackEnd Server, When I was using 9i I never had problems like this

+1  A: 

To enroll SQL Server and Oracle in a distributed transaction MSDTC needs to have XA transactions enabled. See Supporting XA Transactions:

When the DTC acts as an XA-compliant transaction manager, Oracle, IBM DB/2, Sybase, Informix, and other XA-compliant resource managers can participate in transactions that the DTC controls.

Remus Rusanu