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 用 SQL Anywhere クライアント » SQL Anywhere クライアントのイベント・フック

 

sp_hook_dbmlsync_abort

このストアド・プロシージャは、同期処理をキャンセルする場合に使用します。

#hook_dict テーブルのロー

名前

説明

abort synchronization (in|out)

true | false

#hook_dict テーブルの abort synchronization ローを true に設定すると、dbmlsync はイベント終了後すぐに終了します。

publication_n (in)

パブリケーション名

同期されているパブリケーション (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 スクリプト・バージョン。

備考

この名前のプロシージャが存在する場合、そのプロシージャは dbmlsync の起動時に呼び出され、sp_hook_dbmlsync_delay フックにより各同期が遅延した後に再度呼び出されます。

abort synchronization の値を True に設定することによりフックがアボートを要求する場合、終了コードが sp_hook_dbmlsync_process_exit_code フックに渡されます。sp_hook_dbmlsync_process_exit_code フックが定義されていない場合、終了コードがプログラムの終了コードとして使用されます。

このプロシージャのアクションは、実行直後にコミットされます。

参照

次のプロシージャは、毎日 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;