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_download_fatal_sql_error(不建议使用)

在同步下载由于发生数据库错误即将被回退时执行操作。

不建议使用此挂接。请参见处理事件挂接过程中的错误和警告

#hook_dict 表中各行

名称

说明

table name (in)

表名

错误发生时正在对其应用操作的表。如果 dbmlsync 无法识别该表,则该值为空字符串。

SQL error code (in)

SQL 错误代码

在操作失败时标识由数据库返回的 SQL 错误代码。

publication_n (in)

发布

正被同步的发布,其中 n 是一个整数。每个正在上载的发布都有一个 publication_n 条目。n 的编号从零开始。

MobiLink user (in)

MobiLink 用户名

您正在为其进行同步的 MobiLink 用户。

script version (in)

脚本版本名称

将用于同步的 MobiLink 脚本版本。

注释

如果以该名称命名的过程存在,那么将在同步下载由于发生数据库错误而被回退之前立即调用它。每当遇到不可忽略的 SQL 错误或者当已经调用 sp_hook_dbmlsync_download_SQL_error 挂接并选择了不忽略错误时,将发生这种情况。

此过程应在单独的连接上执行,以便记录故障。否则记录操作将与同步操作一同被回退。如果 dbmlsync 无法建立单独的连接,则不调用该过程。

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

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

另请参见
示例

假定您使用下面的表记录 SQL 错误。

CREATE TABLE "DBA"."SyncLogComErrorTable"
(
   " error_code "       VARCHAR(255) NOT NULL ,
   " event_time "       TIMESTAMP NOT NULL ,
);

以下示例记录在读取下载的过程中发生 SQL 错误时的 SQL 错误代码和当前时间戳。信息存储在远程数据库的 SyncLogSQLErrorTable 中。

CREATE PROCEDURE sp_hook_dbmlsync_download_fatal_sql_error ()
BEGIN
 INSERT INTO SyncLogSQLErrorTable (error_code, event_time)
  SELECT #hook_dict.value, CURRENT TIMESTAMP
  FROM #hook_dict
  WHERE name = 'SQL error code';
END;