天天看點

分布式事務使用方法ODBC 分布式事務OLE DB 分布式事務

使用 OLE DB、開放式資料庫連接配接 (ODBC)、ActiveX 資料對象 (ADO) 或 DB 庫編寫的應用程式可以使用 Transact-SQL

分布式事務,方法是發出 Transact-SQL 語句來啟動和停止 Transact-SQL 分布式事務。OLE DB 和 ODBC 還包含在應用程式程式設計接口

(API) 級别對管理分布式事務的支援。OLE DB 應用程式和 ODBC 應用程式可以使用這些 API 函數管理包括其他元件對象模型 (COM)

資料總管(支援 Microsoft 分布式事務處理協調器 [MS DTC] 事務但不支援 SQL Server 資料庫引擎)的分布式事務。它們也可以使用

API 函數擷取對包括多台運作資料庫引擎執行個體的計算機的分布式事務邊界的更多控制。

通過将連接配接屬性 SQL_ATTR_AUTOCOMMIT 設定為 SQL_AUTOCOMMIT_OFF,然後調用 ODBC

<b>SQLEndTran</b> 函數送出或復原每個事務,可以控制 ODBC API 級别的本地事務。請勿使用這些函數管理 ODBC

應用程式中的分布式事務。而應該使用 MS DTC COM 方法:

調用 <b>DtcGetTransactionManager</b> 連接配接到 MS DTC。

調用 <b>ITransactionDispenser::BeginTransaction</b> 啟動分布式事務并擷取事務對象。

對每個參與分布式事務的 ODBC 連接配接,調用 ODBC 函數 <b>SQLSetConnectAttr</b>,其中 fOption

設定為 SQL_COPT_SS_ENLIST_IN_DTC,vParam 儲存通過

<b>ITransactionDispenser::BeginTransaction</b> 獲得的事務對象的位址。

當事務完成時,對于通過 <b>ITransactionDispenser::BeginTransaction</b> 獲得的事務對象,不要調用 ODBC

<b>SQLEndTran</b> 函數,而應調用 <b>ITransaction::Commit</b> 方法或

<b>ITransaction::Rollback</b> 方法。

控制 OLE DB 中的分布式事務的方法與控制本地事務的方法相似。若要控制本地事務,則 OLE DB 的使用者應該:

使用 <b>ITransactionLocal::StartTransaction</b> 方法啟動本地事務,并獲得事務對象。

對于通過 <b>ITransactionLocal::StartTransaction</b> 獲得的事務對象,調用

<b>ITransaction::Commit</b> 方法或 <b>ITransaction::Rollback</b>

方法。

若要控制分布式事務,使用者應該:

調用 <b>ITransactionDispenser::BeginTransaction</b> 啟動分布式事務,并擷取事務對象。

對每個參與分布式事務的連接配接,調用分布式事務對象的 <b>ITransactionJoin</b> 接口。

對分布式事務對象調用 <b>ITransaction::Commit</b> 方法或 <b>ITransaction::Rollback</b>

方法,完成該事務。