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 イベント » 同期イベント

 

begin_publication 接続イベント

同期しているパブリケーションに関する有用な情報を提供します。このスクリプトを使って、ファイル・ベースのダウンロードの世代番号を管理できます。

パラメータ

次の表の説明では、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 に保存されます。

参照
SQL の例

同期されるパブリケーションごとに情報を記録する必要がある場合があります。次の例では、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} )}' );
Java の例

次の 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 );
}
.NET の例

次の 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 );
}