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_end

您可以使用此存储过程在同步完成之前添加自定义操作。

#hook_dict 表中各行

名称

说明

restart (out)

sync | download | none

如果设置为 sync,dbmlsync 会重试它刚完成的同步。值 sync 替换 true,虽然后者与前者作用相同,但不建议使用后者。

如果设置为 none(缺省值),则 dbmlsync 将根据其命令行参数关闭或重新启动。值 none 替换 false,虽然后者与前者作用相同,但不建议使用后者。

如果设置为 download 并且 restartable download 参数为 true,则 dbmlsync 会尝试重新启动刚才失败的下载。

exit code (in)

数字

如果设置为任意非零值(零为缺省值),则表示同步错误。

publication_n (in)

发布

正被同步的发布,其中 n 是一个整数。每个正在上载的发布都有一个 publication_n 条目。n 的编号从零开始。

MobiLink user (in)

MobiLink 用户名

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

upload status (in)

not sent | committed | failed

指定在 dbmlsync 试图验证是否接收到上载时 MobiLink 服务器所返回的状态。状态可以是:

  • not sent - 未向 MobiLink 服务器发送上载,因为某个错误阻止了上载或是因为请求的同步不需要上载,不发送上载会在诸如仅下载同步、重新启动的下载或基于文件的下载这些情况下发生。
  • committed - MobiLink 服务器已接收到上载并已提交。
  • failed - MobiLink 服务器未提交上载。对于事务性上载,当一些事务但不是所有事务由服务器成功上载并确认后,上载状态为 '失败'。

script version (in)

脚本版本名称

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

restartable download (in) true|false

如果为 true,则当前同步的下载已失败并且可以重新启动。如果为 false,则下载已成功或无法重新启动。

restartable download size (in) 整数

当 restartable download 参数为 true 时,此参数指示下载失败前收到的字节数。当 restartable download 为 false 时,此值无意义。

error hook user state (in) 整数

该值包含关于错误的信息,可从挂接 sp_hook_dbmlsync_all_error、sp_hook_dbmlsync_communication_error、sp_hook_dbmlsync_misc_error 或 sp_hook_dbmlsync_sql_error 发送。

注释

如果以该名称命名的过程存在,那么它将在每个同步结束时被调用。

该过程的操作将在执行后立即被提交。

如果定义 sp_hook_dbmlsync_end 挂接,使其始终将 restart 参数设置为 sync,并且在 dbmlsync 命令行上以 -n pub1、-n pub2、……,这种格式指定了多个发布,则 dbmlsync 会重复同步第一个发布而永远不同步第二个发布。

另请参见
示例

在下面的示例中,如果当前同步的下载失败并可以重新启动,则手工重新启动下载。

CREATE PROCEDURE sp_hook_dbmlsync_end()
BEGIN
  -- Restart the download if the download for the current sync
  --  failed and can be restarted  
  IF EXISTS (SELECT * FROM #hook_dict
    WHERE name = 'restartable download' AND value='true')
      THEN
   UPDATE #hook_dict SET value ='download' WHERE name='restart';
  END IF;
END;