为了使分布式事务正常工作,我已经尝试了将近一个星期。我有一些关于MSSQL的过程,它们试图从MySQL中选择数据。我的需要是一举做到这一点(!)事务。当时,我已经使用来自MySQL的单层OpenLink驱动程序在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事务可以工作?
发布于 2011-08-26 14:43:07
这里有两个重要的方面--
1)用于分布式事务的OLE DB 有支撑 -因此我假设Microsoft数据源提供程序也应该.
我还假设,如果MSDASQL确实支持分布式事务,那么它将直接处理该功能,而不是将其委托给ODBC驱动程序.
在ODBC驱动程序中,通过调用
SQLSetConnectAttr(SQL_ATTR_ENLIST_IN_DTC)
因此,通过DSN创建对话框启用OpenLink驱动程序记录应该有助于确定是否调用了SQLSetConnectAttr(SQL_ATTR_ENLIST_IN_DTC)。
2)我们需要看到更多的跟踪,以便看到ODBC活动立即导致“驱动程序不支持此函数”错误.
你可以和记录支持案例和OpenLink软件做进一步的.
发布于 2011-08-29 16:54:43
如果要使用XA数据源和Microsoft分布式事务协调器(MS )处理分布式事务,则需要执行以下步骤
在Windows和Windows 2003上:
在Windows和Windows 2008上:
还请参阅为了支持XA事务,需要注册项。并验证第三方驱动程序XA DLL是否创建了这些注册表项。
https://stackoverflow.com/questions/7204452
复制相似问题