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

SQL Anywhere 12.0.1 » Mobile Link クライアント管理 » Mobile Link 用 SQL Anywhere クライアント » SQL Anywhere クライアント » 同期の開始

 

同期中の同時実行性

同期の整合性を保証するため、最後のアップロードが送信された後で変更されたリモートデータベースのサーバー修正ローから変更がダウンロードされていないことを dbmlsync で確認する必要があります。デフォルトでは通常、テーブルがロックされずにこの操作が行われるため、データベース上の他の同時接続ユーザーに与える影響が最小限に抑えられます。スクリプト化されたアップロードを使用するパブリケーションを同期する場合、または sp_hook_dbmlsync_schema_upgrade フックが定義されている場合には、テーブルが IN SHARE MODE でロックされます。

テーブルがロックされていないと、dbmlsync はアップロードの構築後に修正されたローをすべて追跡します。これらのいずれかのローの変更がダウンロードに含まれている場合は、競合とみなされます。

競合が検出された場合は、ダウンロードフェーズがキャンセルされ、新しい変更が上書きされないようにダウンロード操作がロールバックされます。次に、dbmlsync ユーティリティはアップロード手順を含む同期を再試行します。今度はローが同期処理の最初に処理されており、アップロードにこのローが含まれているため、このローを失うことはありません。

デフォルトでは、dbmlsync は正常に実行されるまで同期のリトライを行います。リトライの回数を制限するには、拡張オプション ConflictRetries を使用します。ConflictRetries を -1 に設定すると、正常に実行されるまで dbmlsync によってリトライが実行されます。これを正の整数に設定すると、dbmlsync は指定した回数以内でリトライを実行します。

 -d オプション
 LockTables オプション
 参照