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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere でのプログラミングの概要 » 3 層コンピューティングと分散トランザクション » 分散トランザクションの使用

 

分散トランザクションからのリカバリ

コミットされていない操作の保留中にデータベース・サーバにフォールトが発生した場合、トランザクションのアトミックな状態を保つために、起動時にこれらの操作をロールバックまたはコミットする必要があります。

分散トランザクションからコミットされていない操作がリカバリ中に検出されると、データベース・サーバは DTC に接続を試み、検出された操作を保留または不明のトランザクションに再エンリストするように要求します。再エンリストが完了すると、DTC は未処理操作のロールバックまたはコミットをデータベース・サーバに指示します。

再エンリスト処理が失敗すると、SQL Anywhere は不明の操作をコミットするかロールバックするかを判断できなくて、リカバリは失敗します。データの状態が保証されないことを前提にして、リカバリに失敗したデータベースをリカバリする場合は、次のデータベース・サーバ・オプションを使って強制リカバリします。

  • -tmf   DTC が特定できないときは、未処理の操作をロールバックしてリカバリを続行します。-tmf サーバ・オプションを参照してください。

  • -tmt   指定した時間内に再エンリストが完了しないときは、未処理の操作をロールバックしてリカバリを続行します。-tmt サーバ・オプションを参照してください。