MS DTC 分散式交易

使用 OLE DB、「開放式資料庫連接」(ODBC)、ActiveX Data Objects (ADO) 或 DB-Library 所撰寫的應用程式,可以藉由發出 Transact-SQL 陳述式啟動與停止 Transact-SQL 分散式交易來使用 Transact-SQL 分散式交易。OLE DB 與 ODBC 也包含在應用程式發展介面 (API) 層級管理分散式交易的支援。OLE DB 與 ODBC 應用程式可以使用這些 API 函數,來管理包含其他「元件物件模型」(COM) 資源管理員的分散式交易,這些資源管理員支援 SQL Server Database Engine以外的「 Microsoft 分散式交易協調器」(MS DTC) 交易。它們也可以使用 API 函數,來取得分散式交易界限的更多控制權,這些交易包含數台執行Database Engine執行個體的電腦。

ODBC 分散式交易

您可以藉由將連接屬性 SQL_ATTR_AUTOCOMMIT 設定為 SQL_AUTOCOMMIT_OFF,及藉由呼叫 ODBC SQLEndTran 函數來認可或回復每一筆交易的方法來在 ODBC API 層級上控制本機交易。請不要在 ODBC 應用程式中,使用這些函數來管理分散式交易。請使用 MS DTC COM 方法來代替:

  • 呼叫 DtcGetTransactionManager 來連線到 MS DTC。

  • 呼叫 ITransactionDispenser::BeginTransaction來啟動分散式交易並取得交易物件。

  • 為每個參與分散式交易的 ODBC 連線呼叫 ODBC 函數 SQLSetConnectAttr,將 fOption 設定為 SQL_COPT_SS_ENLIST_IN_DTC 且 vParam 存放來自於 ITransactionDispenser::BeginTransaction的交易物件位址。

  • 交易完成時不要呼叫 ODBC SQLEndTran 函數,請呼叫從 ITransactionDispenser::BeginTransaction 取得之交易物件的 ITransaction::CommitITransaction::Rollback 方法。

OLE DB 分散式交易

OLE DB 中分散式交易的控制模型與本機交易的控制類似。若要控制本機交易,OLE DB 用戶端需要:

  • 使用 ITransactionLocal::StartTransaction 方法來啟動本機交易並取得交易物件。

  • 呼叫由 ITransactionLocal::StartTransaction 取得之交易物件的 ITransaction::CommitITransaction::Rollback 方法。

若要控制分散式交易,取用者:

  • 呼叫 DtcGetTransactionManager 來連線到 MS DTC。

  • 呼叫 ITransactionDispenser::BeginTransaction來啟動分散式交易並取得交易物件。

  • 為每個參與分散式交易的連線,呼叫分散式交易物件的 ITransactionJoin介面。

  • 呼叫分散式交易物件的 ITransaction::CommitITransaction::Rollback 方法來完成交易。