我已经尝试了将近一周的时间来让分布式事务正常工作。我在 MSSQL 上有一些程序试图从 MySQL 中选择数据。我需要在一个(!)交易中做到这一点。当时我已经使用 OpenLink 的单层 MySQL 驱动程序在 MSSQL 上设置了 ODBC 连接,这表明 XA 事务可以成功运行(配置 ODBC 连接后集成了一个测试按钮)。然后我通过 MSDASQL 在 MSSQL 中设置了一个链接服务器到这个 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 事务确实有效?