首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和MSSQL之间的分布式事务

MySQL和MSSQL之间的分布式事务
EN

Stack Overflow用户
提问于 2011-08-26 12:11:45
回答 2查看 6.2K关注 0票数 5

为了使分布式事务正常工作,我已经尝试了将近一个星期。我有一些关于MSSQL的过程,它们试图从MySQL中选择数据。我的需要是一举做到这一点(!)事务。当时,我已经使用来自MySQL的单层OpenLink驱动程序在MSSQL上建立了ODBC连接,这说明XA事务成功地工作(配置ODBC后集成了一个测试按钮)。然后,我通过MSDASQL将MSSQL中的链接服务器设置为此ODBC连接,但在执行以下操作时

代码语言:javascript
复制
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.)

另一个测试:

代码语言:javascript
复制
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事务可以工作?

EN

回答 2

Stack Overflow用户

发布于 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软件做进一步的.

票数 2
EN

Stack Overflow用户

发布于 2011-08-29 16:54:43

如果要使用XA数据源和Microsoft分布式事务协调器(MS )处理分布式事务,则需要执行以下步骤

在Windows和Windows 2003上:

  1. 从“控制面板”中打开“管理工具”,然后打开“组件服务”。还可以单击“开始”按钮,单击“运行”,在“打开”框中键入dcomcnfg,然后按“确定”打开组件服务。
  2. 展开“组件服务”、“计算机”并右击“我的计算机”,然后选择“属性”。
  3. 单击MSDTC选项卡,然后单击安全配置。
  4. 选中Enable事务复选框,然后单击OK。这将导致MS DTC服务重新启动。
  5. 再次单击OK关闭“属性”对话框,然后关闭“组件服务”。
  6. 停止并重新启动Server,以确保它与MS更改同步。

在Windows和Windows 2008上:

  1. 单击“开始”按钮,在“开始搜索”框中键入dcomcnfg,然后按ENTER以打开Component。还可以在“开始搜索”框中键入%windir%\system32\comexp.msc以打开组件服务。
  2. 展开组件服务、计算机、我的计算机,然后展开分布式事务协调器。
  3. 右键单击“本地DTC”,然后选择“属性”。
  4. 单击“本地DTC属性”对话框中的“安全性”选项卡。
  5. 选中Enable事务复选框,然后单击OK。这将导致MS DTC服务重新启动。
  6. 再次单击OK关闭“属性”对话框,然后关闭“组件服务”。
  7. 停止并重新启动Server,以确保它与MS更改同步。

还请参阅为了支持XA事务,需要注册项。并验证第三方驱动程序XA DLL是否创建了这些注册表项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7204452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档