このストアド・プロシージャを使用して、アップロード用にトランザクション・ログがスキャンされる直前にカスタム・アクションを追加します。
名前 |
値 |
説明 |
---|---|---|
starting log offset_n (in) |
数値 |
スキャンの開始位置を示すログ・オフセット値。アップロードされるパブリケーションごとに 1 つの値があります。n の番号は 0 から始まります。この値は、Publication-n に一致します。たとえば、log offset_0 は publication_0 のオフセットです。 |
log scan retry (in) |
true | false |
この同期でトランザクション・ログが初めてスキャンされる場合、この値は False、それ以外の場合は True。Mobile Link サーバと dbmlsync でスキャン開始位置の情報が異なっている場合、ログは 2 回スキャンされます。 |
publication_n (in) |
パブリケーション名 |
同期されているパブリケーション (n は整数)。アップロードされるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。 |
MobiLink user (in) |
Mobile Link ユーザ名 |
同期対象となる Mobile Link ユーザ。 |
script version (in) |
スクリプト・バージョン名 |
同期に使用される Mobile Link スクリプト・バージョン。 |
この名前のプロシージャが存在する場合、dbmlsync がトランザクション・ログをスキャンしてアップロードをアセンブルする直前に呼び出されます。
このプロシージャのアクションは、実行直後にコミットされます。
次のテーブルを使用して、リモート・データベース上の同期イベントのログを取るとします。
CREATE TABLE SyncLog ( "event_id" INTEGER NOT NULL DEFAULT AUTOINCREMENT , "event_name" VARCHAR(128) NOT NULL , "ml_user" VARCHAR(128) NULL , "event_time" TIMESTAMP NULL, "table_name" VARCHAR(128) NULL , "upsert_count" VARCHAR(128) NULL , "delete_count" VARCHAR(128) NULL , "exit_code" INTEGER NULL , "status_retval" VARCHAR(128) NULL , "pubs" VARCHAR(128) NULL , "sync_descr " VARCHAR(128) NULL , PRIMARY KEY ("event_id"), ); |
次に、アップロードのためにトランザクション・ログがスキャンされる直前に Mobile Link ユーザと現在のタイムスタンプのログを取る例を示します。
CREATE PROCEDURE sp_hook_dbmlsync_logscan_begin () BEGIN -- log the synchronization event INSERT INTO SyncLog (event_name, ml_user,event_time) SELECT 'logscan_begin', #hook_dict.value, CURRENT TIMESTAMP FROM #hook_dict WHERE name = 'MobiLink user' ; END; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |