您可以使用此存储过程处理通信错误。
名称 | 值 | 说明 |
---|---|---|
publication_n (in) |
发布 |
不建议使用。改用 subscription_n。正被同步的发布,其中 n 是一个整数。每个正在同步的发布都有一个 publication_n 条目。n 的编号从零开始。 |
MobiLink user (in) |
MobiLink 用户名 |
您正在为其进行同步的 MobiLink 用户。 |
script version (in) |
脚本版本名称 |
用于同步的 MobiLink 脚本版本。 |
error message (in) | 错误消息文本 | 这与在 dbmlsync 日志中显示的文本相同。 |
error id (in) | 数字 | 唯一标识消息的 ID。使用此行来标识错误消息,因为错误消息文本可能发生变化。 |
error hook user state (in|out) | 整数 |
此值可由挂接设置,以便将状态信息传递到对 sp_hook_dbmlsync_all_error、sp_hook_dbmlsync_communication_error、sp_hook_dbmlsync_misc_error、sp_hook_dbmlsync_sql_error 或 sp_hook_dbmlsync_end 挂接的未来调用。第一次调用这些挂接的其中之一时,该行的值为 0。如果挂接更改了行值,则将在下一个挂接调用中使用新值。 |
stream error code (in) | 整数 | 流报告的错误。 |
system error code (in) | 整数 | 系统特定的错误代码。 |
subscription_n (in) | 预订名称 | 正在进行同步的预订的名称,其中 n 是一个整数。每个正在同步的预订都有一个 subscription_n 条目。n 的编号从零开始。 |
如果在启动过程中还没有初始化同步的时候发生了错误,用于 Mobilink 用户和脚本版本的 #hook_dict 条目将被设置为一个空字符串,并且在 #hook_dict 表中不设置 publication_n 行或 subscription_n 行。
当在 dbmlsync 和 MobiLink 服务器间发生通信错误时,使用此挂接可以访问特定流的错误信息。
stream error code 参数是一个整数,用于指示通信错误的类型。
错误挂接用户状态行为您提供了一种有用的机制来将错误性质的相关信息传递到 sp_hook_dbmlsync_end 挂接,您可以在该挂接中使用这些信息确定是否重试同步。
此过程将在单独的连接上执行以确保它执行的操作不会在同步连接执行回退时丢失。如果 dbmlsync 无法建立单独的连接,则不调用该过程。
由于此挂接是在单独的连接上执行的,因此您在访问在挂接过程中正在同步的表时应谨慎使用,因为 dbmlsync 可能会锁定这些表。这些锁定可能会导致挂接中的操作失败或无限期等待。
该过程的操作将在执行后立即被提交。
任何具有 MANAGE REPLICATION 系统特权的用户都能创建挂接过程。但是,为了确保挂接能够访问用来将信息传入和传出挂接的 #hook_dict 表,挂接必须满足以下要求之一:
由具有 SELECT ANY TABLE 和 UPDATE ANY TABLE 系统特权的用户拥有。
使用 CREATE PROCEDURE 语句的 SQL SECURITY INVOKER 子句定义。
假定您使用下表记录远程数据库中的通信错误。
CREATE TABLE communication_error_log ( error_msg VARCHAR(10240), error_code VARCHAR(128) ); |
以下示例设置 sp_hook_dbmlsync_communication_error 以记录通信错误。
CREATE PROCEDURE sp_hook_dbmlsync_communication_error() BEGIN DECLARE msg VARCHAR(255); DECLARE code INTEGER; // get the error message text SELECT value INTO msg FROM #hook_dict WHERE name ='error message'; // get the error code SELECT value INTO code FROM #hook_dict WHERE name = 'stream error code'; // log the error information INSERT INTO communication_error_log(error_code,error_msg) VALUES (code,msg); END |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |