在即将调用挂接时,dbmlsync 会使用以下的 CREATE 语句在远程数据库中创建 #hook_dict 表。表名前的 # 表示此表为临时表。
CREATE TABLE #hook_dict( name VARCHAR(128) NOT NULL UNIQUE, value VARCHAR(10240) NOT NULL) |
dbmlsync 实用程序使用 #hook_dict 表将值传递给挂接函数,而挂接函数使用 #hook_dict 表将值传递回 dbmlsync。
每个挂接都接收参数值。有时,您可以修改此值以返回一个新值,而有些值是只读的。表中的每一行都包含一个参数值。
例如,假设按如下方式定义两个预订:
CREATE SYNCHRONIZATION SUBSCRIPTION sub1 TO pub1 FOR MyUser; SCRIPT VERSION 'v1' |
CREATE SYNCHRONIZATION SUBSCRIPTION sub2 TO pub2 FOR MyUser; SCRIPT VERSION 'v1' |
对于以下 dbmlsync 命令行调用 sp_hook_dbmlsync_begin 挂接时
dbmlsync -c 'DSN=MyDsn' -s sub1,sub2 |
#hook_dict 表将包含以下行:
#hook_dict 行 | 值 |
---|---|
subscription_0 |
sub1 |
subscription_1 |
sub2 |
publication_0 |
pub1 |
publication_1 |
pub2 |
MobiLink user |
MyUser |
Script version |
v1 |
不建议使用 publication_n 行,可能在以后的版本中将它们删除。
挂接可以从 #hook_dict 表中检索值,并使用检索到的值对行为进行自定义。例如,您可以使用如下 SELECT 语句检索 MobiLink 用户:
SELECT value FROM #hook_dict WHERE name = 'MobiLink user' |
您可以使用挂接更新输入/输出参数,从而修改 dbmlsync 的行为。例如,在 sp_hook_dbmlsync_abort 挂接中,您可以通过使用如下语句更新表的 abort synchronization 行来指示 dbmlsync 中止同步:
UPDATE #hook_dict SET value='true' WHERE name='abort synchronization' |
每个挂接的描述都列出了 #hook_dict 表中的行。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |