Microsoft 分散トランザクション コーディネーターの使用 (ODBC)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
MS DTC を使用して 2 つ以上の SQL Server インスタンスを更新するには
MS DTC の OLE DtcGetTransactionManager 関数を使用して、MS DTC に接続します。 MS DTC の詳細については、Microsoft 分散トランザクション コーディネーターを参照してください。
確立する SQL Server 接続ごとに SQL DriverConnect を 1 回呼び出します。
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 を指定して呼び出します。
Note
手順 4. と手順 5. で示した呼び出し方法の代わりに、SQL Server ごとに SQLSetConnectAttr と SQLExecDirect を続けて呼び出すこともできます。