This chapter assumes some familiarity with distributed transactions. For information, see your transaction server documentation. This section describes some commonly used terms.
Resource managers are those services that manage the data involved in the transaction.
The SQL Anywhere database server can act as a resource manager in a distributed transaction when accessed through OLE DB or ODBC. The ODBC driver and OLE DB provider act as resource manager proxies on the client computer.
Instead of communicating directly with the resource manager, application components can communicate with resource dispensers, which in turn manage connections or pools of connections to the resource managers.
SQL Anywhere supports two resource dispensers: the ODBC driver manager and OLE DB.
When a transactional component requests a database connection (using a resource manager), the application server enlists each database connection that takes part in the transaction. DTC and the resource dispenser perform the enlistment process.
Distributed transactions are managed using two-phase commit. When the work of the transaction is complete, the transaction manager (DTC) asks all the resource managers enlisted in the transaction whether they are ready to commit the transaction. This phase is called preparing to commit.
If all the resource managers respond that they are prepared to commit, DTC sends a commit request to each resource manager, and responds to its client that the transaction is completed. If one or more resource manager does not respond, or responds that it cannot commit the transaction, all the work of the transaction is rolled back across all resource managers.