Yash
Yash

Reputation: 1018

Distributed Transaction with SQL Server and Websphere MQ

We have SQL server 2012 as the DB server and Websphere MQ on Redhat Linux as the MQ server. Our applications are on a Redhat Linux server and implemented in C++.

We need distributed transaction capability so that transactions can span both the resources (DB and MQ). A distributed transaction is managed by a Transaction Manager working across Resource Managers of the resources.

WMQ has the ability to act as a Distributed Transaction Manager if the individual Resource Managers(DB and MQ) provide XA operations. MS SQL does have a ODBC library for Linux: http://www.microsoft.com/en-us/download/details.aspx?id=28160.

  1. Does the SQL Server library support XA operations such as xa_open, etc. which can let it participate in an XA transaction managed by WMQ?

Other option is to use MS Distributed Transaction Coordinator as the Transaction Manager.

  1. Is it possible to use MSDTC from a C++ program running on Linux?
  2. Does MSDTC work with WMQ acting as a Resource Manager?

Thanks, Yash

Upvotes: 4

Views: 1367

Answers (1)

Tim McCormick
Tim McCormick

Reputation: 956

I wish I had better news for you...

Assuming you're talking about V8 (although other releases are similar), there is no support for MS SQL Server at all when using MQ as the transaction manager. You can see this in the 'databases' section of the MQ SOE:

http://www-969.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=1350550241693&osPlatform=Linux#sw-Databases

MSDTC can be used, but only by clients running in Windows as far as I'm aware - I don't see how you could make it work for your scenario.

Another option is to use a J2EE environment (WAS/JBoss etc). This will act as the transaction manager, and MS SQL & MQ will work as resources. Still, this doesn't solve your requirement to write in C++.

The only suggestions I have for you that really work therefore are:

1) Review the transaction managers MQ does support: http://www-969.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=1350550241693&osPlatform=Linux#sw-Transaction Servers and Gateways

Sadly I'm not familiar with the details of the options on there.

2) Raise an 'RFE' with IBM as their customer. This is the mechanism they provide to allow customers/external parties to request new function:

http://www.ibm.com/developerworks/rfe/

Although there's no guarantee it will be accepted, or which version it might end up in (or when!).

Upvotes: 2

Related Questions