このストアドプロシージャーは、同期処理をキャンセルする場合に使用します。
名前 | 値 | 説明 |
---|---|---|
abort synchronization (in|out) |
true | false |
#hook_dict テーブルの abort synchronization ローを true に設定すると、同期はイベント終了後すぐに終了します。 |
publication_n (in) |
パブリケーション |
廃止予定。代わりに subscription_n を使用します。同期されているパブリケーション (n は整数)。同期されるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。 |
MobiLink user (in) |
Mobile Link ユーザー名 |
同期対象となる Mobile Link ユーザー。 |
exit code (in|out) |
数値 |
abort synchronization を TRUE に設定すると、この値を使用して、アボートされた同期の終了コードを設定できます。0 は同期が成功したことを示します。他の数は同期が失敗したことを示します。 |
script version (in|out) |
スクリプトバージョン名 |
同期に使用される Mobile Link スクリプトバージョン。 |
subscription_n (in) |
サブスクリプション名 |
同期されているサブスクリプションの名前 (n は整数)。同期されるサブスクリプションごとに 1 つの subscription_n エントリがあります。n の番号は 0 から始まります。 |
この名前のプロシージャーが存在する場合、そのプロシージャーは dbmlsync の起動時に呼び出され、sp_hook_dbmlsync_delay フックにより各同期が遅延した後に再度呼び出されます。
dbmlsync をコマンドラインから実行する場合に abort synchronization を true に設定すると、残りのすべての同期 (スケジュールされた同期も含む) がキャンセルされます。Dbmlsync API または SQL SYNCHRONIZE 文を使用する場合に abort synchronization を true に設定すると、現在の同期のみが中止されます。
このプロシージャーのアクションは、実行直後にコミットされます。
次のプロシージャーは、毎日 19:00 ~ 20:00 にスケジュールされた保守作業時間中に、同期が行われないようにします。
CREATE PROCEDURE sp_hook_dbmlsync_abort() BEGIN DECLARE down_time_start TIME; DECLARE is_down_time VARCHAR(128); SET down_time_start='19:00'; IF datediff( hour,down_time_start,now(*) ) < 1 THEN set is_down_time='true'; ELSE SET is_down_time='false'; END IF; UPDATE #hook_dict SET value = is_down_time WHERE name = 'abort synchronization' END; |
次の 2 つの理由のいずれかにより、同期をアボート可能なアボートフックがあるとします。1 つ目の理由は、同期の正常終了を示すのに、dbmlsync に終了コード 0 を含ませるためです。また、2 つ目の理由は、エラー状態を示すのに、dbmlsync に 0 以外の終了コードを含ませるためです。sp_hook_dbmlsync_abort フックを次のように定義すれば、上記のことが可能です。
BEGIN IF [condition that defines the normal abort case] THEN UPDATE #hook_dict SET value = '0' WHERE name = 'exit code'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'abort synchronization'; ELSEIF [condition that defines the error abort case] THEN UPDATE #hook_dict SET value = '1' WHERE name = 'exit code'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'abort synchronization'; END IF; END; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |