我已经尝试了将近一周的时间来分发交易。我在MSSQL上有一些尝试从MySQL中选择数据的程序。我需要在一个(!)事务中执行此操作。当时我在MSSQL上使用来自OpenLink的Single-Tier MySQL驱动程序设置了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事务是否有效?
答案 0 :(得分:2)
这里有两个重要方面 -
1)似乎OLE DB does have support用于分布式事务 - 所以我假设用于ODBC数据源的Microsoft OLE DB提供程序也应该......
我还假设如果MSDASQL确实支持分布式事务,那么它将直接处理该功能,而不是将其委托给ODBC驱动程序......
通过调用 -
在ODBC驱动程序中打开分布式事务的SQLSetConnectAttr(SQL_ATTR_ENLIST_IN_DTC)
因此,通过DSN创建对话框启用OpenLink驱动程序日志记录应有助于确定是否调用SQLSetConnectAttr(SQL_ATTR_ENLIST_IN_DTC)。
2)我们需要看到额外的跟踪才能看到ODBC活动立即导致“驱动程序不支持此功能”错误...
log a support case OpenLink Software {{}}}可以更进一步......
答案 1 :(得分:0)
在Windows XP和Windows Server 2003上:
从“控制面板”中,打开“管理工具”,然后打开 组件服务。您也可以单击“开始”按钮,单击“运行”, 在“打开”框中键入dcomcnfg,然后按“确定”打开“组件” 服务。
展开“组件服务”,“计算机”并右键单击“我的电脑”, 然后选择“属性”。
单击“MSDTC”选项卡,然后单击“安全配置”。
选中“启用XA事务”复选框,然后单击“确定”。 这将导致MS DTC服务重新启动。
再次单击“确定”关闭“属性”对话框,然后关闭 组件服务。
- 醇>
停止然后重新启动SQL Server以确保它与之同步 MS DTC的变化。
在Windows Vista和Windows Server 2008上:
单击“开始”按钮,在“开始搜索”框中键入dcomcnfg,然后单击“确定” 然后按ENTER键打开组件服务。你也可以输入 在“开始搜索”框中打开组件的%windir%\ system32 \ comexp.msc 服务。
展开“组件服务”,“计算机”,“我的电脑”,然后展开 分布式事务协调器。
右键单击“本地DTC”,然后选择“属性”。
单击“本地DTC属性”对话框中的“安全”选项卡。
选中“启用XA事务”复选框,然后单击“确定”。 这将导致MS DTC服务重新启动。
再次单击“确定”关闭“属性”对话框,然后关闭 组件服务。
- 醇>
停止然后重新启动SQL Server以确保它同步 随着MS DTC的变化。
另请参阅Registry Entries Are Required for XA Transaction Support并验证第三方驱动程序XA DLL是否创建了这些注册表项。