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

SQL Anywhere 12.0.0 (中文) » MobiLink - 客户端管理 » 用于 MobiLink 的 SQL Anywhere 客户端 » SQL Anywhere 客户端的事件挂接 » dbmlsync 挂接简介 » 使用事件挂接过程

 

#hook_dict 表

在即将调用挂接时,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 表中的行。

 示例