Mobile Link 同期 プロファイル_SQL Anywhere
目的
このドキュメントの目的は、Mobile Link同期プロファイルの作成方法及び、使われ方を議論します。
概要
同期プロファイルは、SQL Anywhere 及び、Ultra Light の同期オプションをリモート・データベースに保存できる SQL Anywhere の機能です。
この機能を使用すれば、リモート・データベースの同期を開始するときに使用するコマンド・ラインや文の複雑さを軽減することができます。また、同期構成をアプリケーションではなくデータベース内に配置することもできます。
データベース内に同期情報を格納すれば、情報を更新するために新たなアプリケーションを配備する必要がなく、データベースを更新するだけで済むため、アプリケーションに格納するよりも便利です。
同期プロファイルは、SQL Anywhere クライアント (dbmlsync) または Ultra Light の SYNCHRONIZE 文を呼び出すときか、または Dbmlsync API から同期を起動するときに指定することができます。同期プロファイルは、作成した後に削除したり変更することができます。
同期プロファイルの作成
Mobile Link クライアント用の同期プロファイルを作成するには、以下の構文を使用します:
CREATE SYNCHRONIZATION PROFILE sync-profile-name sync-options;
sync-profile-name は、リモート・データベース内で同期プロファイルを一意に識別します。
sync-options は、「同期プロファイルのオプション文字列」で説明されているように、SQL Anywhere クライアントまたは Ultra Light クライアントのいずれかに対して有効なオプション文字列を指定します。
同期プロファイルの削除
リモート・データベース内の同期プロファイルを削除するには、以下の構文を使用します:
DROP SYNCHRONIZATION PROFILE sync-profile-name;
syn-cprofile-name で指定される同期プロファイルは、既にリモート・データベースに存在する同期プロファイルでなければなりません。
同期プロファイルの変更
リモート・データベース内の同期プロファイルを変更するには、以下の構文を使用します:
ALTER SYNCHRONIZATION PROFILE sync-profile-name {REPLACE | MERGE} sync-options;
syn-cprofile-name で指定される同期プロファイルは、既にリモート・データベースに存在する同期プロファイルでなければなりません。
REPLACE を使用すると、ALTER SYNCHRONIZATION PROFILE 文が、既存の同期プロファイルを、指定したsync-profile-name に指定した sync-options と置き換えます。これは、DROP SYNCHRONIZATION PROFILE の実行後にCREATE SYNCHRONIZATION PROFILE を実行するのと同じことを意味します。
以下の例は、SQL Anywhere プロファイルの変更が、同期プロファイルを削除してから作成するのと同じであることを表しています:
ALTER SYNCHRONIZATION PROFILE example REPLACE ‘Publication=pub1;Verbosity=HIGH’;
以下の構文と同等です。
DROP SYNCHRONIZATION PROFILE example;
CREATE SYNCHRONIZATION PROFILE example ‘Publication=pub1;Verbosity=HIGH’;
MERGE を使用すると、ALTER SYNCHRONIZATION PROFILE 文が、既存の同期プロファイルに新しい sync-options を追加します。
sync-options のオプションが既存の同期ファイルですでに指定されている場合、既存のオプションが sync-options文字列で指定されている新しい値に置き換えられます。
例えば、以下の文を実行します。
CREATE SYNCHRONIZATION PROFILE example ‘Publication=pub1;Verbosity=BASIC’;
ALTER SYNCHRONIZATION PROFILE MERGE ‘Publication=pub2;UploadOnly=ON;Verbosity=HIGH’;
以下の構文と同等です。
CREATE SYNCHRONIZATION PROFILE example ‘Publication=pub2;UploadOnly=ON;Verbosity=HIGH’;
注意:上記の同期プロファイルの構文(例)は、SQL Anywhere クライアントのみに適用することができます。
publication 及び、verbosity プロファイル・オプションは、SQL Anywhere クライアント専用のものです。
SQL Anywhere クライアント及び、Ultra Light クライアントのすべてのプロファイル・オプションについては、「同期プロファイルのオプション文字列」を参照して下さい。
Ultra Light クライアントの場合、同期プロファイルの変更において、もう 1 つの機能を使用することができます。
Ultra Light クライアントの場合のみ、プロファイル文字列からオプションを削除する際に、オプション名の後に値を入力せずに、等号 (=) だけを付ける方法があります。
例えば、以下の文を実行します:
CREATE SYNCHRONIZATION PROFILE ul_example ‘ScriptVersion=ul_script_v1;Publications=pub1’
次に以下の文を実行します。
ALTER SYNCHRONIZATION PROFILE ul_example MERGE ‘ScriptVersion=;’
以下の構文と同等です。
CREATE SYNCHRONIZATION PROFILE ul_example ‘Publications=pub1’;
注意:同期プロファイル文字列にはサブオプション・リストを含めることができます。
例えば、以下の Ultra Light 用の構文を実行します:
CREATE SYNCHRONIZATION PROFILE ul_exampl ‘MobiLinkUid=admin;Stream=HTTP(host-ww.sybase.com;port=2439)’);
host 及び、port の値はサブオプション・リストです。これらの値は、全体をカッコ (丸カッコまたは波カッコ) で囲み、Stream オプション値の後に指定します。Ultra Light クライアントの場合のみ、ALTER 文を使用してサブオプション値も追加または削除することができます。
以下の文は、Stream パラメータに compression を追加し、リストから port を削除し、host 値のミスタイプを修正します。
ALTER SYNCHRONIZATION PROFILE ul_example MERGE ‘Stream.compression=zlib;Stream.port=;Stream.host=www.sybase.com’;
サブオプションは、parent_option_name.sub_option_name の形式で参照されることに注意して下さい。
注意:上記の ul_example 同期プロファイルの構文は、Ultra Light クライアントのみに適用することができます。
SQL Anywhere クライアントの場合、既存の同期プロファイルからプロファイル・オプションを削除する際に、「option=;」を使用することはできません。また、SQL Anywhere クライアントでは、既存のプロファイルのプロファイル・オプションのサブオプションを変更することもできません。
SQL Anywhere クライアントでこれらの操作を行うには、DROP SYNCHRONIZATION PROFILE の後に CREATE SYNCHRONIZATION PROFILE を実行する必要があります。
同期プロファイルのオプション文字列
同期プロファイルのオプション文字列は、<オプション名>=<オプション値> という形式の要素がセミコロンで区切られているリストです。
以下の表には、SQL Anywhere クライアントと Ultra Light クライアントの有効な <オプション名> とそれに対応する <オプション値> が示されています。
SQL Anywhere クライアントのオプションには長い名前と短縮名があり、どちらも使用することができます。
SQL Anywhere クライアント
SQL Anywhere クライアント用の同期プロファイルを作成する場合、以下のオプションを指定することができます:
長い名前 | 短縮名 | 有効な値 | 説明 |
---|---|---|---|
AuthParms | ap | String | -ap コマンドライン オプションと同じです。 |
ApplyDnldFile | ba | String | -ba コマンドライン オプションと同じです。 |
ContinueDownload | dc | Boolean | -dc コマンドライン オプションと同じです。 |
CreateDnldFile | bc | String | -bc コマンドライン オプションと同じです。 |
DnldFileExtra | be | String | -be コマンドライン オプションと同じです。 |
DownloadOnly | ds | Boolean | -ds コマンドライン オプションと同じです。 |
DownloadReadSize | drs | Integer | -dsr コマンドライン オプションと同じです。 |
ExtOpt | e | String | -e コマンドライン オプションと同じです。 |
IgnoreHookErrors | eh | Boolean | -eh コマンドライン オプションと同じです。 |
IgnoreScheduling | is | Boolean | -is コマンドライン オプションと同じです。 |
KillConnections | d | Boolean | -d コマンドライン オプションと同じです。 |
LogRenameSize | x | Integer(オプションで後ろに K または M が付きます) |
-x コマンドライン・オプションを参照。 LogRenameSize=0 をセットすることは、コマンドラインで -x を指定することと同等です。また、LogRenameSize=<val> を指定することは、コマンドラインで -x <val> を指定することと同等です。 |
MobiLinkPwd | mp | String | -mp コマンドライン オプションと同じです。 |
MLUser | u | String | -u コマンドライン オプションと同じです。 |
NewMLPassword | mn | String | -mn コマンドライン オプションと同じです。 |
Ping | pi | Boolean | -pi コマンドライン オプションと同じです。 |
Publication | n | String | –n コマンドライン オプションと同じです。 *コマンド・ライン・オプションとの違いとして、Publication は、同期プロファイルで一度だけ指定することができます。コマンド・ライン・オプションは、複数回指定することができます。 |
RemoteProgressGreater | ra | Boolean | -ra コマンドライン オプションと同じです。 |
RemoteProgressLess | rb | Boolean | -rb コマンドライン オプションと同じです。 |
TransactionalUpload | tu | Boolean | -tu コマンドライン オプションと同じです。 |
UpdateGenNum | bg | Boolean | -bg コマンドライン オプションと同じです。 |
UploadOnly | uo | Boolean | -uo コマンドライン オプションと同じです。 |
UploadRowCnt | urc | Integer | -urc コマンドライン オプションと同じです。 |
Verbosity | String(オプションのカンマ区切りのリスト) |
dbmlsync の冗長性を制御します。-v オプションに似ています。値は、次のオプションの 1 つ以上を含むカンマ区切りのリストにします。 次に示すように、各オプションは既存の -v オプションに対応しています。 ・BASIC は -v と同じです。 ・HIGH は -v+ と同じです。 ・CONNECT_STR は -vc と同じです。 ・ROW_CNT は -vn と同じです。 ・OPTIONS は -vo と同じです ・ML_PASSWORD は -vp と同じです。 ・ROW_DATA は -vr と同じです。 ・HOOK は -vs と同じです。 |
表 1 ‐ SQL Anywhere クライアント用同期プロファイルのオプション
Boolean 値を使用する文字列オプションの場合、オプションに TRUE を設定すると、SQL Anywhere クライアントのコマンド・ライン(dbmlsync)で以下のオプションを指定した場合と同じになります:
・ TRUEを指定するオプション: ON, 1, YES, TRUE
・ FALSEを指定するオプション: OFF, 0, NO, FALSE
Ultra Light クライアント
Ultra Light クライアント用の同期プロファイルを作成する場合、以下のオプションを指定することができます:
プロファイル・オプション | 有効な値 | 説明 |
---|---|---|
AllowDownloadDupRows | Boolean | このオプションは、同じプライマリ・キーを持つ複数のローがダウンロードされる場合に、エラーが発生するのを防ぎます。このオプションを使用すると、同期が失敗することなく一貫性のないデータを同期することができます。デフォルト値はFALSE です。 |
AuthParms | String(カンマ区切り) | Authentication Parameters 同期パラメータ と同じです。 |
CheckpointStore | Boolean | CheckpointStore 同期パラメータと同じです。 |
ContinueDownload | Boolean | 失敗したダウンロードの再開を参照。 |
DisableConcurrency | Boolean | DisableConcurrency 同期パラメータと同じです。 |
DownloadOnly | Boolean | DownloadOnly 同期パラメータと同じです。 |
KeepPartialDownload | Boolean | KeepPartialDownload 同期パラメータと同じです。 |
MobiLinkPwd | String | Password 同期パラメータ と同じです。 |
MobiLinkUid | String | User Name 同期パラメータ と同じです。 |
NewMobiLinkPwd | String | New Password 同期パラメータ と同じです。 |
Ping | Boolean | Ping 同期パラメータ と同じです。 |
Publications | String(カンマ区切り) |
Publications 同期パラメータ と同じです。 * このパラメータがブランク (デフォルト) かアスタリスク (*) の場合、Ultra Light データベース内のすべてのテーブルが同期されます。 |
ScriptVersion | String | Send Column Names 同期パラメータ と同じです。 |
SendDownloadACK | Boolean | Send Download Acknowledgement 同期パラメータと同じです。 |
Stream | String(サブリスト付き) | Stream Type 同期パラメータ と同じです。 |
TableOrder | String(カンマ区切り) | TableOrder 同期パラメータ と同じです。 |
UploadOnly | String | Upload Only 同期パラメータ と同じです。 |
表 2 ‐ Ultra Light クライアント用同期プロファイルのオプション
Boolean 値を使用する文字列オプションの場合、オプションに TRUE を設定すると、SQL Anywhere クライアントのコマンド・ライン(dbmlsync)で以下のオプションを指定した場合と同じになります:
・ TRUEを指定するオプション: ON, 1, YES, TRUE
・ FALSEを指定するオプション: OFF, 0, NO, FALSE
同期プロファイルの使用
SQL Anywhere クライアント
SQL Anywhere では、dbmlsync コマンド・ライン・オプション -sp<同期プロファイル> があります。
dbmlsync コマンド・ラインで -sp オプションを使用すると、<同期プロファイル> で指定した同期プロファイル名に存在するオプションがコマンド・ラインに追加されて実行されます。
dbmlsync コマンド・ラインで指定されているオプションと同じオプションが同期プロファイル内に存在する場合、同期プロファイルで指定されているオプションよりもコマンド・ラインのオプションが優先されます。
同期プロファイルは、Dbmlsync API でも使用されます。
.NET 用のパブリック・メソッド UInt32 Sync(string profile_name, string extra_opts) または、C++用の DBSC_SyncHdl Sync( const char *profile_name, const char *extra_opts ) を呼び出すときに、1 番目のパラメータとして同期プロファイルを指定します。
追加パラメータは、メソッド呼び出しの 2 番目のパラメータに指定し、同期プロファイル内に存在するオプションよりも優先されます。
詳細については、DocCommentXchange の Dbmlsync APIドキュメンテーションを参照してください:
http://dcx.sap.com/index.html#sqla170/ja/html/81a8feab6ce21014b388d50a3dd7bd30.html
Ultra Light クライアント
SQL Anywhere では、UltraLite SYNCHRONIZE 文があります。
この SYNCHRONIZE 文を使用すると、同期プロファイル内のパラメータかSYNCHRONIZE 文内で USING オプションを使用して指定したパラメータに従って同期が構成されます。
例:
SYNCHRONIZE PROFILE ul_example
上記の構文は、同期プロファイルのul_example を使用して同期を実行します。
CREATE SYNCHRONIZATION PROFILE ul_exampl ‘Publications=pub1’
SYNCHRONIZE PROFILE ul_example MERGE ‘Publications=pub2;MobiLinkPwd=sql’
上記の構文は、pub2 を使用して、この同期で同期オプションに Mobile Link パスワードを追加するようにPublications を上書きします。
プロファイル名を指定せずに、パラメータのリストを指定して同期することもできます:
例:
SYNCHRONIZE USING ‘MobiLinkUid=admin;MobiLinkPwd=sql;Stream=TCPIP(host=192.169.1.1);ScriptVersion=Test’
これは、リストされている文字列のオプションを使用して同期を開始します。
デモ
この同期プロファイルのデモは、4 つのテーブル(Admin、Inventory、Parent、Child)で構成される簡単なデータベース・スキーマを使用します:
統合データベースでは、4 つのベース・テーブルそれぞれについて削除されたローを処理するシャドー・テーブルとアップロード及び、ダウンロードの処理に必要なテーブル・スクリプトがあります。
統合データベースでは、アップロードとダウンロードを処理するために、削除された行と必要なテーブル・スクリプトを処理するための4ベーステーブルのそれぞれについて、シャドウテーブルがあります。
リモート・データベースは、同じスキーマを使用して作成されています。4 つのテーブルは、同期ユーザ rem100 を持つパブリケーション pub1 に存在します。
SQL Anywhere クライアント (dbmlsync) を使用して、SQL Anywhere リモート・データベースとの同期を実行します。
このデモで使用されるファイルはすべて以下の場所にあります。
同期プロファイル サンプル(https://wiki.scn.sap.com/wiki/download/attachments/377291615/SynchronizationProfiles.zip)
SQL Anywhere 統合データベースの作成
SQL Anywhere 統合データベースを作成するには、\SynchronizationProfiles\cons ディレクトリ内の setup.bat ファイルを実行します。
setup.bat ファイルを実行すると、以下の処理が行われます。
・SQL Anywhere 統合データベース MLcons.db が初期化されます。
・MLcons データベース用の接続パラメータでユーザ DSN profile_cons が作成されます。
・MLcons データベースが起動されます。
・syncsa.sql スクリプトが実行され、Mobile Link システム・オブジェクトが作成されます。
・\SynchronizationProfiles\cons ディレクトリ内の cons_schema.sql スクリプトが実行され、MLcons データベース内に統合データベース・スキーマが作成されます。
・MLcons データベースにテスト・データが挿入されます。
・Mobile Link サーバが起動されます。
SQL Anywhere リモート・データベースおよび同期プロファイルの作成
SQL Anywhere リモート・データベースを作成するには、\SynchronizationProfiles\rem ディレクトリ内の setup.bat ファイルを実行します。
setup.bat ファイルを実行すると、以下の処理が行われます。
・SQL Anywhere リモート・データベース MLrem.db が初期化されます。
・MLrem データベース用の接続パラメータでユーザ DSN profile_rem が作成されます。
・MLrem データベースが起動されます。
・\SynchronizationProfiles\rem ディレクトリ内の rem_schema.sql スクリプトが実行され、MLrem データベース内にリモート・データベース・スキーマが作成されます。rem_schema.sql スクリプトは、以下の定義を使用して同期プロファイルを作成します。
CREATE SYNCHRONIZATION PROFILE profile1
‘Verbosity=HIGH;Publication=pub1;MobiLinkPwd=sql;ExtOpt={
CommunicationType=tcpip;CommunicationAddress=”host=local
host;port=2439”;ScriptVersion=profile_v1}’;
・MLrem データベースにテスト・データが挿入されます。
・指定された -sp profile1 オプションを使用して dbmlsync が開始され、Mobile Link サーバとの最初の同期が実行されます。以下の dbmlsync コマンド・ラインが実行されます。
dbmlsync -c “DSN=profile_rem” -sp profile1 -o rem.txt
新しいテスト・データをデータベースに挿入して新しい同期を実行するには、\SynchronizationProfiles\rem ディレクトリ内の sync.bat ファイルを実行します。
デモの実行手順
以下の手順により、指定されたバッチ・ファイルを使用してデモを実行します。
1. \SynchronizationProfiles\cons\setup.bat
2. \SynchronizationProfiles\rem\setup.bat
3. \SynchronizationProfiles\rem\sync.bat
このページは、以下の英語ページの抄訳です。
https://wiki.scn.sap.com/wiki/display/SQLANY/Using+MobiLink+Synchronization+Profiles