Many applications need to access data stored in databases other than Microsoft SQL Server. In general, these databases are accessed through ODBC drivers that run on a Windows machine. In order to participate in transactions, the ODBC driver must support either the OLE Transactions or XA protocol for communicating between the transaction manager (MS DTC) and the database resource manager.
As we saw in Chapter 4, XA is part of the X/Open transaction processing model. Today most databases—other than SQL Server—support the XA protocol but not OLE Transactions. To provide transaction support for these databases, the ODBC driver must accept OLE Transactions calls and translate them into the message formats and protocols that would result if the corresponding XA function had been called, as shown in Figure 6-1. The resource manager server itself does not need to be changed. The ODBC driver completely hides OLE Transactions from the resource manager.
Figure 6-1. Using the MS DTC to control XA-compliant resource managers.
MTS 2.0 included a transaction-aware ODBC driver for Oracle databases. Shortly after MTS 2.0 was released, IBM released an updated ODBC driver for IBM DB2 databases so that they can be used from MTS also. Microsoft is working closely with other database and ODBC driver vendors to make transaction-aware ODBC drivers available for other databases. Check with your database vendor to see whether updated ODBC drivers are available.
In addition, XA-compliant transaction managers can control OLE Transactions_compliant resource managers such as SQL Server and MSMQ. The MS DTC provides a mapping layer to translate XA calls into the corresponding OLE Transactions calls, enabling OLE Transactions resource managers to act as fully XA-compliant resource managers.