可使用 sp_setreplicate 或 sp_setrepproc 系统过程或者 ALTER TABLE 语句配置用于复制的表。通过使用带有一个子句的 ALTER TABLE 语句将表标识为主数据源:
ALTER TABLE table-name SET REPLICATE ON; |
设置 REPLICATE ON 会在事务日志中放入额外的信息。每当表上发生 UPDATE、INSERT 或 DELETE 操作时,SQL Anywhere 复制代理使用此额外信息,在需要之处将行的完整前映像提交给复制服务器以进行复制。
即使只需要复制表中的某些数据,对表所做的所有更改也都会被提交到复制服务器。复制服务器负责将要复制的数据与不需要复制的数据区分开。
当您更新、插入或删除行时,行的前映像就是操作之前该行的内容,而后映像则是操作之后该行的内容。对于 INSERTS,只提交后映像(其前映像为空)。对于 DELETES,后映像为空,且只提交前映像。对于 UPDATES,前映像和更新值都会被提交。
复制支持下列数据类型:
数据类型 | 描述(Open Client/Open Server 类型) |
---|---|
精确的整数数据类型 | int、smallint和tinyint |
精确的小数数据类型 | decimal 和 numeric |
近似的数字数据类型 | float (8 字节)和real |
货币数据类型 | money 和 smallmoney |
字符数据类型 | char(n)、varchar(n) 和 text |
日期和时间数据类型 | datetime 和 smalldatetime |
二进制数据类型 | binary(n)、varbinary(n) 和 image |
位数据类型 | bit |
SQL Anywhere 支持零长度的非 NULL 数据。但是,零长度的非空 LONG VARCHAR 和 LONG BINARY 数据在复制到复制站点时会成为 NULL。
当主表中某些列的数据类型不受支持时,如果您使用兼容的受支持数据类型创建复制定义,则可复制数据。例如,要复制 DOUBLE 列,可在复制定义中将该列定义为 FLOAT。
对于进行了大量更新的表,复制性能会受到影响。如果您遇到可能与复制通信流量相关的性能问题,则可考虑使用复制的过程,因为复制的过程仅发送复制过程调用,而不发送过程中的每一项操作。
因为设置 REPLICATE ON 会向事务日志发送额外信息,所以日志的增长要快于非复制数据库日志的增长。
SQL Anywhere LTM 支持复制服务器的复制最少列功能。该功能在复制服务器中已启用。
有关复制最少列的详细信息,请参见复制服务器的文档。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |