Awhile back, I was building a .NET application which needed to do two-phase commit between MS SQL 2000 and MQSeries (5.3 CSD04 on production). I had the 5.3 CSD05 client installed on my dev box, and the SQL code worked out. But I couldn't figure out how to implement the MQ Series 2-phase commit in .NET.
Here's what I learned:
- You cannot do Two-Phase commit with a normal client, regardless of what platform. You can only do XA transactions with either a server application or with the Extended Transactional Client (which is not free).
- The 5.3 extended transactional client does not support MTS/COM+ transactions.
- SQL Server can't directly use XS (database) support.
- SQL server CAN be involved in a DTC transaction in COM+/MTS, and you can only do COM+ DTC coordination if you are coordinating to an MQ server. You need a server installed on the Windows machine and work out a way of routing messages appropriately.
Since that point I have found several more helpful articles:
MQ from .NET by Bill O'Brien
.NET and MQSeries by Dino Chiesa
MQSeries.NET by Neil Kolban
MQ Posts by DotNetInterop