我们将 SQL server 2012 作为 DB 服务器,将 Redhat Linux 上的 Websphere MQ 作为 MQ 服务器。我们的应用程序在 Redhat Linux 服务器上并用 C++ 实现。
我们需要分布式事务能力,以便事务可以跨越两种资源(DB 和 MQ)。分布式事务由跨资源的资源管理器工作的事务管理器管理。
如果单个资源管理器(DB 和 MQ)提供 XA 操作,则 WMQ 能够充当分布式事务管理器。
MS SQL 确实有一个适用于 Linux 的 ODBC 库: http://www.microsoft.com/en-us/download/details.aspx?id=28160 。
另一种选择是使用 MS 分布式事务协调器作为事务管理器。
谢谢,
亚什
最佳答案
我希望我有更好的消息告诉你......
假设您在谈论 V8(尽管其他版本类似),那么在使用 MQ 作为事务管理器时根本不支持 MS SQL Server。您可以在 MQ SOE 的“数据库”部分看到这一点:
http://www-969.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=1350550241693&osPlatform=Linux#sw-Databases
MSDTC 可以使用,但据我所知只能由在 Windows 中运行的客户端使用 - 我不知道您如何使其适用于您的场景。
另一种选择是使用 J2EE 环境(WAS/JBoss 等)。这将充当事务管理器,而 MS SQL 和 MQ 将充当资源。尽管如此,这并不能解决您用 C++ 编写的要求。
因此,我为您提供的唯一真正有效的建议是:
1) 查看 MQ 支持的事务管理器:
http://www-969.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=1350550241693&osPlatform=Linux#sw-Transaction 服务器和网关
遗憾的是,我不熟悉那里的选项的详细信息。
2) 以 IBM 作为他们的客户提出“RFE”。这是他们提供的允许客户/外部方请求新功能的机制:
http://www.ibm.com/developerworks/rfe/
虽然不能保证它会被接受,或者它最终可能是哪个版本(或何时!)。
关于sql-server-2012 - SQL Server 和 Websphere MQ 的分布式事务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25305403/