Microsoft 分散トランザクション コーディネータを使用する方法 (ODBC)
新規 : 2006 年 4 月 14 日
MS DTC を使用して複数の SQL Server を更新するには
MS DTC の OLE DtcGetTransactionManager 関数を使用して、MS DTC に接続します。MS DTC の詳細については、Microsoft 分散トランザクション コーディネータを参照してください。
確立する Microsoft® SQL Server™ 接続ごとに 1 回ずつ SQLDriverConnect を呼び出します。
MS DTC の OLE ITransactionDispenser::BeginTransaction 関数を呼び出して、MS DTC トランザクションを開始し、トランザクションを表すトランザクション オブジェクトを取得します。
MS DTC トランザクションに参加させる ODBC 接続ごとに、SQLSetConnectAttr を 1 回以上呼び出します。SQLSetConnectAttr の 2 番目のパラメータは SQL_ATTR_ENLIST_IN_DTC、3 番目のパラメータは (手順 3. で取得した) トランザクション オブジェクトである必要があります。
更新する SQL Server ごとに 1 回ずつ SQLExecDirect を呼び出します。
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 ごとに SQLSetConnectAttr と SQLExecDirect を続けて呼び出すこともできます。 |