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 直通 » SQL 直通简介 » 执行脚本

 

在 SQL Anywhere 客户端上手动执行脚本

所有脚本均可手动执行。对于 SQL Anywhere 客户端,使用 sync_get_next_passthrough_script 和 sync_execute_next_passthrough_script 函数手动执行脚本。

sync_get_next_passthrough_script 函数不带有任何参数,并返回要执行的下一脚本的 run_order。然后,可以通过查询 dbo.sync_passthrough_script 表来找到该脚本。

dbo.sync_passthrough_script 表

dbo.sync_passthrough_script 表的定义如下:

列名 说明
run_order

INTEGER。run_order 参数决定脚本在远程数据库上的应用顺序。脚本始终根据 run_order 按顺序应用。

其值必须是非负整数。

script_id

INTEGER。该值唯一标识脚本。

script_name

VARCHAR(128)。脚本的名称。此列对应于在统一数据库上调用 ml_add_passthrough_script 时为脚本指定的 script_name 值。

flags

BIGINT。flags 列包含传递到 ml_add_passthrough_script 存储过程的 flags 参数中所指定的信息。通过将每个指定的标记转换为以下值,并使用 OR 运算符将结果值组合起来,可将指定的这些标记编码为一个整数。

  • manual   表示该脚本只能在手动执行模式下运行。缺省情况下,所有脚本既能在自动执行模式下运行,又能在手动执行模式下运行。

  • exclusive   表示该脚本只能在同步结束时,在所有的同步表上获得独占锁的情况下自动执行。如果 affected_ publications 值没有列出任何发布,则忽略该选项。该选项仅对 SQL Anywhere 远程数据库有意义。

  • schema_diff   表示该脚本应在模式比较模式下运行。此模式下,会根据脚本所描述的模式对数据库模式进行更改。例如,将现有表的 create 语句视为 alter 语句。该标记只适用于在 UltraLite 远程数据库上运行的脚本。

affected_pubs

LONG VARCHAR。脚本运行前必须进行同步的发布列表。此列对应于调用 ml_add_passthrough_script 时为脚本指定的 affected_pubs 值。

script

LONG VARCHAR。直通脚本的内容。此列对应于调用 ml_add_passthrough_script 时为脚本指定的 script 值。

description

VARCHAR(2000)。脚本的注释或说明。此列对应于调用 ml_add_passthrough_script 时为脚本指定的 description 值。

如果没有其它要执行的脚本,或执行的上一脚本生成了错误并且未从服务器收到有关如何继续的说明,则 sync_get_next_passthrough_script 函数会返回空值。

sync_execute_next_passthrough_script 函数不带任何参数。此函数执行下一个脚本并更新数据库中的进度和状态信息,以便可在稍后将脚本的结果上载到统一数据库。如果上一个脚本返回一个错误,并且未从 MobiLink 服务器收到有关如何处理该错误的说明,则不会执行任何脚本。如果执行了某个脚本,则会返回该脚本的运行顺序。如果未执行任何脚本,则返回空值。请参见获取脚本结果