Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ SQL の使用法 » リモートデータアクセス » トランザクションの管理とリモートデータ

 

リモートトランザクション管理

リモートサーバに関連するトランザクションを管理する方法として、2 フェーズコミットプロトコルが使用されます。SQL Anywhere は、ほとんどの場合においてトランザクションの整合性を保証します。しかし、1 つのトランザクションで 2 つ以上のリモートサーバが呼び出されるときには、分散した作業単位が未定の状態で残る可能性があります。2 フェーズコミットプロトコルを使用する場合でも、リカバリ処理は含まれません。

ユーザのトランザクションを管理する通常の論理は、次のようになっています。

  1. SQL Anywhere は、BEGIN TRANSACTION 通知でリモートサーバの作業を開始します。

  2. トランザクションのコミットの準備が整うと、SQL Anywhere は、トランザクションの一部であったリモートサーバのそれぞれに PREPARE TRANSACTION 通知を送信します。これによって、リモートサーバがトランザクションをコミットする準備が整っていることを確実にします。

  3. PREPARE TRANSACTION 要求が失敗すると、すべてのリモートサーバは現在のトランザクションをロールバックするよう指示されます。

    PREPARE TRANSACTION 要求がすべて成功すると、サーバはトランザクションに関わるリモートサーバのそれぞれに、COMMIT TRANSACTION 要求を送信します。

BEGIN TRANSACTION によって開始すればどのようば文でも、トランザクションを開始できます。BEGIN TRANSACTION を明示しない場合は、SQL 文はリモートサーバに送信されて、1 つのリモートの作業単位として実行されます。