How to use Microsoft Distributed Transaction Coordinator (ODBC)
To update two or more SQL Servers by using MS DTC
- Connect to MS DTC by using the MS DTC OLE DtcGetTransactionManager function. For information about MS DTC, see Microsoft Distributed Transaction Coordinator.
- Call SQLDriverConnect once for each Microsoft® SQL Server™ connection you want to establish.
- Call the MS DTC OLE ITransactionDispenser::BeginTransaction function to begin an MS DTC transaction and obtain a Transaction object that represents the transaction.
- Call SQLSetConnectAttr one or more times for each ODBC connection you want to enlist in the MS DTC transaction. SQLSetConnectAttr must be called with an fOption of SQL_ATTR_ENLIST_IN_DTC and a vParam of the Transaction object (obtained in Step 3).
- Call SQLExecDirect once for each SQL Server you want to update.
- Call the MS DTC OLE ITransaction::Commit function to commit the MS DTC transaction. The Transaction object is no longer valid.
To perform a series of MS DTC transactions, repeat Steps 3 through 6.
To release the reference to the Transaction object, call the MS DTC OLE ITransaction::Return function.
To use an ODBC connection with an MS DTC transaction, and then use the same connection with a local SQL Server transaction, call SQLSetConnectAttr with a vParam of SQL_DTC_DONE.
Note You can also call SQLSetConnectAttr and SQLExecDirect in turn for each SQL Server instead of calling them as suggested earlier in Steps 4 and 5.