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

SQL Anywhere 12.0.0 (中文) » MobiLink - 入门 » MobiLink 教程 » 教程:使用 ScriptVersion 扩展选项更改模式

 

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

在本课中,将修改远程数据库,以便在 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;eng=remote -s my_sub -k

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

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