Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 客户端管理 » 用于 MobiLink 的 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 是一个整数。每个正在上载的发布都有一个 publication_n 条目。n 的编号从零开始。

MobiLink user (in)

MobiLink 用户名

您正在为其进行同步的 MobiLink 用户。

exit code (in|out)

数字

如果将 abort synchronization 设置为 TRUE,可以使用此值设置已中止同步的退出代码。0 指示成功的同步。任何其它数字都表示同步失败。

script version (in|out)

脚本版本名称

将用于同步的 MobiLink 脚本版本。

注释

如果以该名称命名的过程存在,则它将在 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;

假定您有一个中止挂接,它可能因为以下两个原因之一中止同步。原因之一是同步正常完成,因此您希望 dbmlsync 的退出代码为 0。另一个原因是出现错误,因此您希望 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;