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

SQL Anywhere 11.0.1 (中文) » MobiLink - 客户端管理 » 用于 MobiLink 的 SQL Anywhere 客户端 » SQL Anywhere 客户端的事件挂接

 

sp_hook_dbmlsync_sql_error

您可以使用此存储过程来处理同步期间出现的数据库错误。例如,您可以实现 sp_hook_dbmlsync_sql_error 挂接,从而在发生 SQL 错误时执行特定操作。

#hook_dict 表中各行

名称

说明

publication_n (in)

发布

正被同步的发布,其中 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。如果挂接更改了行值,则将在下一个挂接调用中使用新值。

使用此挂接将状态信息传递给 sp_hook_dbmlsync_end 挂接时,可以导致此 _end 挂接执行某些操作(如重试同步)。

SQL code (in) SQL 错误代码 操作失败时由数据库返回的 SQL 错误代码。这些值在 SQL Anywhere 11 安装目录的 SDK\Include 子目录下的 sqlerr.h 中定义。
SQL state (in) SQLSTATE 值 操作失败时由数据库返回的 SQL 状态。
注释

如果在启动过程中还没有初始化同步的时候发生了错误,用于 Mobilink 用户和脚本版本的 #hook_dict 条目将被设置为一个空字符串,并且在 #hook_dict 表中不设置 publication_n 行。

您可以使用 SQL Anywhere SQLCODE 或 ANSI SQL 标准 SQLSTATE 来标识 SQL 错误。有关 SQLCODE 或 SQLSTATE 值的列表,请参见SQL Anywhere 错误消息

此过程将在单独的连接上执行以确保它执行的操作不会在同步连接执行回退时丢失。如果 dbmlsync 无法建立单独的连接,则不调用该过程。

缺省情况下,在 Windows Mobile 设备上,同步表以独占模式被锁定,这意味着如果此挂接需要访问任何同步表,它就不能成功执行。如果它需要访问同步表而您将 dbmlsync 扩展选项 LockTables 设置为 EXCLUSIVE,则它也无法执行。请参见LockTables (lt) 扩展选项

该过程的操作将在执行后立即被提交。

另请参见