在本课中,将修改远程数据库,以便在 customer 表中添加新列,以及更改同步使用的脚本版本。在执行此操作前,必须确保要上载的 customer 表没有执行任何操作。执行此操作的最佳方法是使用 sp_hook_dbmlsync_schema_upgrade 挂接执行模式更改。在使用此挂接时,dbmlsync 可确保安全更改模式,具体方法是:在同步开始时锁定同步表,并在模式更改完成之前使其保持锁定状态。
如果在存在要上载的操作项时更改模式,则在模式更改后远程数据库始终无法同步。
通过对远程数据库执行以下 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 |
接下来,进行同步,以便上载需要上载的所有操作,以及通过执行 sp_hook_dbmlsync_schema_change 挂接执行模式更改。运行以下命令:
dbmlsync -v+ -ot sync2.txt -c uid=dba;pwd=sql;eng=remote -s my_sub -k |
在完成此同步后,最好查看一下 dbmlsync 日志 sync2.txt,以确保没有指示模式更改未完成的错误。
模式更改现已完成,您可以继续正常同步。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |