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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - クライアント管理 » Mobile Link 用 SQL Anywhere クライアント » SQL Anywhere クライアント » 同期の開始

 

同期中の同時実行性

同期の整合性を確保するために、dbmlsync ではアップロードが構築されてからダウンロードが適用されるまでの間に、ダウンロードのローが修正されないようにする必要があります。

Windows Mobile 以外のプラットフォームでは、デフォルトの動作として dbmlsync は同期中のパブリケーションで指定されているすべてのテーブルに対する共有ロックを取得します。Windows Mobile では、デフォルトの動作として dbmlsync は排他ロックを取得します。dbmlsync は、アップロードの構築を開始する前にロックを取得し、ダウンロードが適用されるまでそのロックを保持します。

ロックの詳細については、ロー・ロックを参照してください。

このロック動作は、次のオプションを使用してカスタマイズできます。

-d オプション

このロック・メカニズムを使用しているときに、データベースに別の接続が存在し、その接続に同期テーブルに対するロックがある場合は、同期が失敗します。別のロックが存在しても、同期がすぐに行われるようにする場合は、dbmlsync で -d オプションを使用します。このオプションを指定すると、同期に影響するロックのある接続はデータベースによって削除されるため、同期を進行できます。削除された接続のコミットされていない変更は、ロールバックされます。

詳細については、-d オプションを参照してください。

LockTables オプション

データの整合性を保持する別の方法は、LockTables 拡張オプションを OFF に設定することです。OFF にすると、アーティクルのテーブルがロックされるのを防ぎます。これにより、dbmlsync はアップロードの構築後に修正されたローをすべて追跡します。ダウンロードを受信しても、そのローが修正されている場合はダウンロードは適用されません。この場合、dbmlsync は同期のリトライを行います。リトライは、新しいダウンロードの競合が検出されないかぎり正常に実行されます。

詳細については、LockTables (lt) 拡張オプションを参照してください。

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

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

詳細については、ConflictRetries (cr) 拡張オプションを参照してください。