Recommended Configurations

In the configuration shown, the client application begins the transaction (the C or C++ BEGIN TRANSACTION statement resides in the application code). Because the MS DTC client utility contains the application programming interfaces (APIs) necessary to begin an MS DTC transaction, the client utility is required on the client node. The commit coordinator for the transaction is a complete MS DTC service on a server node. The particular server-based MS DTC is specified either in the application code or in the client computer's local system registry.

In the configuration shown, the application calls a stored procedure that begins the MS DTC transaction (the Transact-SQL BEGIN DISTRIBUTED TRANSACTION statement resides in the stored procedure). The APIs necessary to begin an MS DTC transaction already reside on each node that hosts the complete MS DTC service. Therefore, the MS DTC client utility is not required on the client node. During installation on each server node, the SQL Server setup program designates the local MS DTC as the default commit coordinator for any transactions begun on that node. If the transaction is begun by a stored procedure, then the MS DTC local to the node on which the procedure was called will act as the transaction's commit coordinator.

In the configuration shown, the application is on the same node as a SQL Server. Because they share a complete MS DTC service, either the application or a SQL Server stored procedure can initiate an MS DTC transaction. If the transaction is begun by the application, then the application determines which server-based MS DTC will act as the transaction's commit coordinator. If the transaction is begun by a stored procedure, then the MS DTC local to the node on which the called procedure resides will act as the transaction's commit coordinator.