We use distributed transactions in our code. We have an MS SQL Server with views on an Oracle database. We sometimes perform transactions across the servers
Our machines were previously set up with Windows 7 and the Oracle 11g client. They were recently rebuilt with the Windows 10 and the 12c client and since that happened, distributed transactions have stopped working. We get the message: "The operation could not be performed because OLE DB provider "OraOLEDB.Oracle" for linked server "[dbname]" was unable to begin a distributed transaction."
This application (and the code being called, in particular) has been in production for 5 years without issue. This is only happening on the two new development machines that are using Windows 10 and the 12c client. No other machines are using Windows 10 or the 12c client.
I installed the 12c client much like I've been installing previous clients over the years, using admin install, using a directory name other than the default, but otherwise nothing else is changed.
I can easily reproduce it in SQL Server Management Studio by executing:
BEGIN TRAN
UPDATE [SomeViewOnOracleTable] set www = 'xxx' where yyy = 'zzz'
COMMIT TRAN
I will get the above error message.
Our MSDTC settings are the same that they've always been, with the following items checked:
Network DTC Access
Allow Remote Clients
Allow Inbound
Allow Outbound
No Authentication Required
Enable XA Transactions
Enable SNA LU 6.2 Transactions
There are other instances of Windows 7 that have the linked server set to the same Oracle database that we're using and they do not have this issue, so the issue is very specific to Windows 10 and/or Oracle 12c drivers.
Is there some setting in the oracle driver that's different from previous versions that we can fix?