Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member186998
Contributor


目的

このドキュメントの目的は、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