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 事件 » 编写同步脚本

 

编写用于下载行的脚本

有两个脚本可用来在下载事务的过程中处理每个表。它们是 download_cursor 脚本(执行插入和更新)和 download_delete_cursor 脚本(执行删除)。

这些脚本可以是 SELECT 语句,也可以是对返回结果集的过程的调用。MobiLink 服务器会将该脚本的结果集下载到远程数据库。MobiLink 客户端自动基于 download_cursor 脚本结果集插入或更新行,基于 download_delete_cursor 事件删除行。

有关使用存储过程的详细信息,请参见从存储过程调用中下载结果集

MobiLink 服务器在单个事务中下载数据。有关下载过程的说明,请参见下载过程中的事件

注意
  • 与上载类似,下载与连接事件一同开始和结束。其它事件是表级别的事件。

  • 如果将 SendDownloadAck 设置更改为 ON,则服务器行为取决于所使用的下载确认模式。对于阻塞下载确认,如果没有从客户端获得下载确认,则整个下载事务将在统一数据库中回退。对于非阻塞下载确认,下载事务将提交但不执行下载时间戳更新和确认脚本,直到接受确认。

    缺省情况下,SendDownloadAck 设为 OFF。

    请参见SendDownloadACK (sa) 扩展选项发送下载确认同步参数-nba 选项nonblocking_download_ack 连接事件publication_nonblocking_download_ack 连接事件

  • 每个远程表的 begin_download 和 end_download 脚本所采用的逻辑独立于所更新的各行。

  • 对于基于时间戳的下载,需指定 last_download_timestamp 参数以确保仅下载自上次同步以来所做的更改。例如,download_cursor 或 download_delete_cursor SQL 脚本可能包括如下行:

    WHERE Customer.last_modified >= {ml s.last_table_download}

    请参见在脚本中使用上次下载时间

  • 下载不区分插入操作与更新操作。与 download_cursor 事件关联的脚本是一个 SELECT 语句,该语句定义要下载的行。客户端将检测行是否存在,然后执行适当的插入或更新操作。

  • 下载过程结束时,客户端根据需要自动删除行,以避免破坏参照完整性。

小心

不要同步先前部署创建的影子表(例如,不应同步以 _mod_del 结尾的表)。这些表仅供统一数据库用于跟踪修改或删除的行。

请参见参照完整性与同步


编写 download_cursor 脚本
编写 download_delete_cursor 脚本