Friday, February 17, 2012

Distributed transaction trough ODBC from MSSQL to Oracle

I lost few days to solve a problem regarding the connection to an Oracle database server (10) with goal to execute a distributed transaction.

The environment was:

Windows Server 2003 Standard

MSSQL Server 2000 Standard

Oracle 10g Production Edition

The connection was quite easy to make with the Microsoft driver, but the error was:

Server: Msg 7391, Level 16, State 1, Line 3

The operation could not be performed because the OLE DB provider 'MSDAORA' was unable to begin a distributed transaction.

OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b].

I tried to use the oracle odbc driver, but all kinds of errors were raised, regarding the TNS name and stuff like this. The real cause was that when you create the linked server you must to check the “Allow inbound process” in the provider options.

The Oracle ODBC driver allow distributed transactions.

Would you please clarify where exactly that ""Allow inbound process" option needs to be checked? I am setting up a linked server with a Provider name as "Microsoft OLE DB for Oracle" and clicking "Provider Options..." button brings up a dialog that does NOT have "Allow inbound process" as one of the options to check.

No comments:

Post a Comment