使用此存储过程可取消同步过程。
名称 | 值 | 说明 |
---|---|---|
abort synchronization (in|out) |
true | false |
如果将 #hook_dict 表的 abort synchronization 行设置为 true,则同步将在该事件结束后立即终止。 |
publication_n (in) |
发布 |
不建议使用。改用 subscription_n。正被同步的发布,其中 n 是一个整数。每个正在同步的发布都有一个 publication_n 条目。n 的编号从零开始。 |
MobiLink user (in) |
MobiLink 用户名 |
您正在为其进行同步的 MobiLink 用户。 |
exit code (in|out) |
数字 |
如果将 abort synchronization 设置为 TRUE,可以使用此值设置已中止同步的退出代码。0 指示成功的同步。任何其它数字都表示同步失败。 |
script version (in|out) |
脚本版本名称 |
将用于同步的 MobiLink 脚本版本。 |
subscription_n (in) |
预订名称 |
正在进行同步的预订的名称,其中 n 是一个整数。每个正在同步的预订都有一个 subscription_n 条目。n 的编号从零开始。 |
如果以该名称命名的过程存在,则它将在 dbmlsync 启动时被调用,并且将在每次 sp_hook_dbmlsync_delay 挂接导致同步延迟后被再次调用。
从命令行运行 dbmlsync 时,将中止同步设置为 true 会导致取消所有剩余的同步(包括已调度的同步)。当使用 dbmlsync API 或 SQL SYNCHRONIZE 语句时,将中止同步设置为 true 只会导致中止当前的同步。
该过程的操作将在执行后立即被提交。
任何具有 MANAGE REPLICATION 系统特权的用户都能创建挂接过程。但是,为了确保挂接能够访问用来将信息传入和传出挂接的 #hook_dict 表,挂接必须满足以下要求之一:
由具有 SELECT ANY TABLE 和 UPDATE ANY TABLE 系统特权的用户拥有。
使用 CREATE PROCEDURE 语句的 SQL SECURITY INVOKER 子句定义。
以下过程将阻止在计划的维护时间(每天 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; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |