Я почти неделю пытался заставить работать распределенные транзакции.У меня есть некоторые процедуры на MSSQL, которые пытаются выбрать данные из MySQL.Мне нужно сделать это за одну (!) Транзакцию.В то время, когда я установил соединение ODBC на MSSQL с одноуровневым драйвером MySQL от OpenLink, в котором говорится, что транзакции XA работают успешно (после настройки соединения ODBC есть встроенная кнопка тестирования).Затем я настроил связанный сервер в MSSQL через MSDASQL для этого соединения ODBC, но при выполнении
begin distributed transaction
select * from optin..lu_source_proc
select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc')
commit transaction
я получаю сообщение об ошибке, что никакая дальнейшая транзакция не может быть запущена внутри фактической транзакции.(Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "Es können keine weiteren Transaktionen in dieser Sitzung gestartet werden." zurückgeben.
)
Другой тест:
set transaction isolation level serializable
begin transaction
select * from optin..lu_source_proc
select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc')
commit transaction
Результат Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "[OpenLink][ODBC][Driver]Driver does not support this function" zurückgeben.
Но почему при настройке драйвер ODBC указывает, что транзакции XA работают?