同期しているパブリケーションに関する有用な情報を提供します。このスクリプトを使って、ファイル・ベースのダウンロードの世代番号を管理できます。
次の表の説明では、SQL データ型を示します。Java または .NET でスクリプトを作成する場合、適切なデータ型を使用してください。SQL データ型と Java データ型とSQL データ型と .NET データ型を参照してください。
SQL スクリプトのパラメータ名 |
説明 |
順序 |
---|---|---|
s.generation_number |
INTEGER。これは INOUT パラメータです。使用している配備環境でファイル・ベースのダウンロードを使用しない場合、このパラメータは無視できます。デフォルトは 1 です。 |
1 |
s.remote_id | VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 | 適用不可 |
s.username |
VARCHAR(128)。Mobile Link ユーザ名。 |
2 |
s.publication_name |
VARCHAR(128)。パブリケーションの名前。 |
3 |
s.last_publication_upload |
TIMESTAMP。このパブリケーシヨンが最後に正常にアップロードされた時刻。 |
4 |
s.last_publication_download |
TIMESTAMP。パブリケーシヨンの最後のダウンロード時刻。 |
5 |
s.subscription_id |
VARCHAR(128)。サブスクリプション ID。 |
6 |
デフォルトの世代番号は 1 です。このイベントにスクリプトが定義されていない場合、リモートに送信される世代番号は必ず 1 になります。
このイベントを使って、現在同期されているパブリケーションに基づいて、同期論理を設計できます。このイベントは、begin_synchronization イベントと同じトランザクションで呼び出され、begin_synchronization イベントの後で呼び出されます。このイベントは、パブリケーションが同期するたびに 1 回呼び出されます。
このイベントは、使用されるパブリケーションに基づいてダウンロードされるものに影響を与えることができます。たとえば、優先度パブリケーション (PriorityPub) と全テーブル用のパブリケーション ( AllTablesPub ) の双方の一部であるテーブルを考えます。begin_publication イベントのスクリプトは、Java クラスまたは SQL 変数やパッケージにパブリケーション名を保存できます。ダウンロード・スクリプトは、パブリケーションが PriorityPub と同期するか AllTablesPub と同期するかにより、異なった動作ができます。
Ultra Light リモートが UL_SYNC_ALL を使用して同期されている場合、このイベントは 'unknown' という名前で 1 回呼び出されます。
generation_number パラメータは、特にファイル・ベースのダウンロード用です。世代番号の出力値は、begin_synchronization スクリプトから end_synchronization スクリプトへ渡されます。generation_number の意味は、現在の同期がダウンロード・ファイルを作成するために使用されているか、現在の同期にアップロードが含まれているかによって異なります。
ファイルベースのダウンロードでは、世代番号を使って、ダウンロードの前にアップロードを強制的に行います。世代番号は、ダウンロード・ファイルに保存されます。アップロードを持つ同期中に、パブリケーションに対するサブスクリプションごとに 1 つの世代番号が出力されます。この番号はアップロード確認でリモート・データベースへ送信され、SYSSYNC.generation_number に保存されます。
同期されるパブリケーションごとに情報を記録する必要がある場合があります。次の例では、ml_add_connection_script を呼び出して、RecordPubSync というストアド・プロシージャにイベントを割り当てます。
CALL ml_add_connection_script( 'version1', 'begin_publication', '{CALL RecordPubSync( {ml s.generation_number}, {ml s.username}, {ml s.publication_name}, {ml s.last_publication_upload}, {ml s.last_publication_download}, {ml s.subscription_id} )}' ); |
次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、beginPublication という Java メソッドを begin_publication 接続イベント用のスクリプトとして登録します。
CALL ml_add_java_connection_script( 'ver1', 'begin_publication', 'ExamplePackage.ExampleClass.beginPublication' ) |
次に示すのは、サンプルの Java メソッド beginPublication です。このメソッドは後で使用する各パブリケーションの名前を保存します。
public String beginPublication( ianywhere.ml.script.InOutInteger generation_number, String user, String pub_name, Timestamp last_publication_upload, Timestamp last_download ) { _publicationNames[ _numPublications++ ] = pub_name; return ( null ); } |
次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、BeginPub という .NET メソッドを begin_publication 接続イベント用のスクリプトとして登録します。
CALL ml_add_dnet_connection_script( 'ver1', 'begin_publication', 'TestScripts.Test.BeginPub' ) |
次に示すのは、サンプルの .NET メソッド BeginPub です。このメソッドは後で使用する各パブリケーションの名前を保存します。
public string BeginPub( ref int generation_number, string user, string pub_name, DateTime last_publication_upload, DateTime last_download ) { _publicationNames[ _numPublications++ ] = pub_name; return ( null ); } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |