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

SQL Anywhere 12.0.1 » MobiLink - 入门 » MobiLink 教程 » 教程:使用 ScriptVersion 扩展选项更改模式

 

第 5 课:对远程数据库执行模式更改

本课假定您已完成前面的所有课程。 请参见第 1 课:创建并配置统一数据库

在本课中,将修改远程数据库,以便在 customer 表中添加新列,以及更改同步使用的脚本版本。在执行此操作前,必须确保要上载的 customer 表不含任何操作项。执行此操作的最佳方法是使用 sp_hook_dbmlsync_schema_upgrade 挂接执行模式更改。在使用此挂接时,dbmlsync 可确保安全更改模式,具体方法是:在同步开始时锁定同步表,并在模式更改完成之前使其保持锁定状态。

注意

如果在存在要上载的操作项时更改模式,则在模式更改后远程数据库始终无法同步。

 ♦ 在远程数据库上执行模式更改
  1. 通过对远程数据库执行以下 SQL 语句,创建 sp_hook_dbmlsync_schema_upgrade 挂接。此挂接可用于在 customer 表中添加新列,以及更改与预订一起存储的 ScriptVersion 扩展选项的值。在执行此挂接后,dbmlsync 会删除它。



    CREATE PROCEDURE sp_hook_dbmlsync_schema_upgrade()
    BEGIN
        ALTER TABLE customer 
        ADD cell_phone varchar(12) default null;
    
        ALTER SYNCHRONIZATION SUBSCRIPTION my_sub
        ALTER OPTION ScriptVersion='my_ver2';
    
        UPDATE #hook_dict
        SET value = 'always'
            WHERE name = 'drop hook';
    END;
  2. 进行同步以上载需要上载的所有操作项,并通过执行 sp_hook_dbmlsync_schema_change 挂接执行模式更改。运行以下命令。

    dbmlsync -v+ -ot sync2.txt -c UID=DBA;PWD=sql;SERVER=remote -s my_sub -k

    在完成此同步后,最好查看一下 dbmlsync 日志 sync2.txt,以确保没有指示模式更改未完成的错误。

    模式更改现已完成,您可以继续正常同步。