次の方法で共有


Microsoft 分散トランザクション コーディネーターの使用 (ODBC)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

MS DTC を使用して 2 つ以上の SQL Server インスタンスを更新するには

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

  2. 確立する SQL Server 接続ごとに SQL DriverConnect を 1 回呼び出します。

  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 を指定して呼び出します。

Note

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

参照

トランザクションの実行 (ODBC)