次の方法で共有


Microsoft 分散トランザクション コーディネーターを使用する方法 (ODBC)

MS DTC を使用して複数の SQL Server を更新するには

  1. MS DTC の OLE DtcGetTransactionManager 関数を使用して、MS DTC に接続します。MS DTC の詳細については、Microsoft 分散トランザクション コーディネーターを参照してください。

  2. 確立する Microsoft® SQL Server™ 接続ごとに 1 回ずつ SQLDriverConnect を呼び出します。

  3. MS DTC の OLE ITransactionDispenser::BeginTransaction 関数を呼び出して、MS DTC トランザクションを開始し、トランザクションを表すトランザクション オブジェクトを取得します。

  4. MS DTC トランザクションに参加させる ODBC 接続ごとに、SQLSetConnectAttr を 1 回以上呼び出します。SQLSetConnectAttr の 2 番目のパラメーターは SQL_ATTR_ENLIST_IN_DTC、3 番目のパラメーターは (手順 3. で取得した) トランザクション オブジェクトである必要があります。

  5. 更新する SQL Server ごとに 1 回ずつ SQLExecDirect を呼び出します。

  6. MS DTC の OLE ITransaction::Commit 関数を呼び出して、MS DTC トランザクションをコミットします。トランザクション オブジェクトは無効になります。

一連の MS DTC トランザクションを実行するには、手順 3. から手順 6. を繰り返します。

トランザクション オブジェクトへの参照を解放するには、MS DTC の OLE ITransaction::Return 関数を呼び出します。

MS DTC トランザクションで ODBC 接続を使用し、この接続をローカルの SQL Server トランザクションでも使用するには、SQLSetConnectAttr に SQL_DTC_DONE を指定して呼び出します。

注意

手順 4. と手順 5. で示した呼び出し方法の代わりに、SQL Server ごとに SQLSetConnectAttrSQLExecDirect を続けて呼び出すこともできます。