使用此存储过程可以使用不同的通信类型或地址重试对 MobiLink 服务器失败的连接。
名称 | 值 | 说明 |
---|---|---|
publication_n (in) |
发布 |
不建议使用。改用 subscription_n。正被同步的发布,其中 n 是一个整数。每个正在同步的发布都有一个 publication_n 条目。n 的编号从零开始。 |
MobiLink user (in) |
MobiLink 用户名 |
您正在为其进行同步的 MobiLink 用户。 |
script version (in) |
脚本版本名称 |
将用于同步的 MobiLink 脚本版本。 |
connection address (in|out) | 连接地址 | 调用挂接时,这是在最近失败的连接尝试中使用的地址。可以将该值设置为要尝试的新的连接地址。如果将重试设置为 true,则该值将用于下一次连接尝试。有关协议选项的列表,请参见MobiLink 客户端网络协议选项汇总。 |
connection type (in|out) | 网络协议 | 调用挂接时,这是在最近失败的连接尝试中使用的网络协议(如 TCPIP)。可以将此值设置为要尝试的新的网络协议。如果将重试设置为 true,则该值将用于下一次连接尝试。有关网络协议的列表,请参见CommunicationType (ctp) 扩展选项。 |
user data (in|out) | 用户定义的数据 | 下次连接尝试失败时将使用的状态信息。例如,您可能会发现存储已重试次数很有用。缺省值为空字符串。 |
allow remote ahead (in|out) | true | false | 只有在为此同步指定了 dbmsync -ra 选项或 RemoteProgressGreater=on 同步配置文件选项时,该值才为 true。通过更改此行的值,您只能为当前同步更改选项值。请参见-r dbmlsync 选项。 |
allow remote behind (in|out) | true | false | 仅当为此同步指定了 dbmsync -ra 选项或 RemoteProgressLess=on 同步配置文件选项时,该值才为 true。通过更改此行的值,您只能为当前同步更改选项值。请参见-r dbmlsync 选项。 |
retry (in|out) | true | false | 如果要重试失败的连接尝试,请将该值设置为 true。缺省值为 FALSE。 |
subscription_n (in) | 预订名称 | 正在进行同步的预订的名称,其中 n 是一个整数。每个正在同步的预订都有一个 subscription_n 条目。n 的编号从零开始。 |
如果以该名称命名的过程存在,那么它将在 dbmlsync 未能连接到 MobiLink 服务器时被调用。
此挂接只适用于对 MobiLink 服务器(而非数据库)的连接尝试。
当出现进度偏移不匹配时,dbmlsync 会断开与 MobiLink 服务器的连接,稍后重新连接。在这种重新连接中,不调用此挂接,重新连接失败导致同步失败。
该过程的操作将在执行后立即被提交。
此示例最多可五次使用 sp_hook_dbmlsync_ml_connect_failed 挂接重试连接。
CREATE PROCEDURE sp_hook_dbmlsync_ml_connect_failed () BEGIN DECLARE idx integer; SELECT IF value = ''then 0 else cast(value as integer)endif INTO idx FROM #hook_dict WHERE name = 'user data'; IF idx < 5 THEN UPDATE #hook_dict SET value = idx +1 WHERE name = 'user data'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'retry'; END IF; END; |
下一示例使用一个包含连接信息的表。当尝试连接失败时,挂接会尝试列表中的下一个服务器。
CREATE TABLE conn_list ( label INTEGER PRIMARY KEY, addr VARCHAR( 128 ), type VARCHAR( 64 ) ); INSERT INTO conn_list VALUES ( 1, 'host=server1;port=91', 'tcpip' ); INSERT INTO conn_list VALUES ( 2, 'host=server2;port=92', 'http' ); INSERT INTO conn_list VALUES ( 3, 'host=server3;port=93', 'tcpip' ); COMMIT; CREATE PROCEDURE sp_hook_dbmlsync_ml_connect_failed () BEGIN DECLARE idx INTEGER; DECLARE cnt INTEGER; SELECT if value = ''then | else cast(value as integer)endif INTO idx FROM #hook_dict WHERE name = 'user data'; SELECT COUNT( label ) INTO cnt FROM conn_list; IF idx <= cnt THEN UPDATE #hook_dict SET value = ( SELECT addr FROM conn_list WHERE label = idx ) WHERE name = 'connection address'; UPDATE #hook_dict SET value = (SELECT type FROM conn_list WHERE label=idx) WHERE name = 'connection type'; UPDATE #hook_dict SET value = idx +1 WHERE name = 'user data'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'retry'; END IF; END; |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |