在本课中,将修改远程数据库,以便在 customer 表中添加新列,以及更改同步使用的脚本版本。
前提条件
本课假定您拥有在本教程(教程:使用 ScriptVersion 扩展选项更改模式)开头的“特权”部分中列出的角色和特权。
本课假定您已完成前面的所有课程。 请参见第 1 课:创建并配置统一数据库。
在修改远程数据库和更改用于同步的脚本版本之前,必须确保需要上载的 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;SERVER=remote -s my_sub -k |
在完成此同步后,最好查看一下 dbmlsync 日志 sync2.txt,以确保没有指示模式更改未完成的错误。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |