2010-01-29 3 views
1

Здравствуйте Im с помощью SQL Server с распределенной транзакцией на локальном оракулы Linked серверов, как следующее:Создания сценариев распределенной транзакции на SQL

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; 

Так что, когда я запускаю этот сценарий, я получаю следующие ошибки и замораживание SQL Server , останавливает и отключает меня.

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

Я делаю что-то неправильно?

* PD: Я могу делать CRUDS на Oracle через SSMS без фразы «НАЧАТЬ РАСПРОСТРАНЕННУЮ ОПЕРАЦИЮ» в запросе .. ПОЧЕМУ? .. Я использую SQL Server 2000 как FrontSide Server и Oracle 10g на BackEnd Server, когда Я использовал 9i, у меня никогда не было таких проблем

+0

Да, я могу сделать SELECT и Вставить без опции «НАЧАЛО РАСПРОСТРАНЕННАЯ ОПЕРАЦИЯ»; –

ответ

2

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

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