Выполнить распределенную транзакцию для связанного сервера Oracle, используя SQL Server 2000 - PullRequest
1 голос
/ 30 января 2010

Я пытаюсь выполнить распределенную транзакцию для одного связанного сервера Oracle, используя SQL Server 2000, я создал следующий скрипт:

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 останавливает и закрывает соединение.

Сообщение 7399, Уровень 16, Состояние 1, Строка 3
Поставщик OLE DB «OraOLEDB.Oracle» для связанного сервера «WSF08_CONTA_ORADATA_II» сообщил об ошибке. Поставщик сообщил о неожиданном катастрофическом сбое.
Сообщение 7303, уровень 16, состояние 1, строка 3 Не удалось инициализировать объект источника данных поставщика OLE DB "OraOLEDB.Oracle" для связанного сервера "WSF08_CONTA_ORADATA_II".

Что происходит?

* P.D:

  1. Я могу создавать / обновлять / удалять данные, используя обычные запросы, но ошибка появляется, когда включено условие DISTRIBUTED TRANSACTION.
  2. Мы недавно обновили или подключили серверы к Oracle 10g. Стоит отметить, что я не сталкивался с проблемами, которые мы использовали с 9i.

1 Ответ

3 голосов
/ 30 января 2010

Чтобы зарегистрировать SQL Server и Oracle в распределенной транзакции, MSDTC должен включить транзакции XA. См. Поддержка транзакций XA :

Когда код неисправности действует как XA-совместимый менеджер транзакций, Oracle , IBM DB / 2, Sybase, Informix и другие XA-совместимые менеджеры ресурсов могут участвовать в сделках, которые DTC контролирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...