复制数据的设置
安装SQL Server复制并设置复制的服务器和数据库后,要进行出版物的设置,就是指定复制数据库中那些表要进行复制,一个出版物可以包括很多表。
从Server Manager窗口,选择源数据服务器。
从Manage选单,选择Replication,然后选择Publication对话框。
选择“NEW”,出现Edit Publications对话框。为该复制数据设置一个名字,选择要复制的表到右边的列表。
这里要注意到这样一个情况,因为我们要从多个源数据库向一个中心服务器数据库复制数据,一定要保证源数据之间不会互相影响。复制的表中要有字段定义数据的来源。
在Edit Publications对话框,选择右边列表中要复制的表,按“Edit”按钮,进入Manage Article对话框,在最下面的Restriction Clause中输入标识唯一源数据的条件。
在Manage Article对话框中,选择Scripts标签。按“Generate”按钮,出现模式源设置画面。这里需要设置初始同步的模式。在多个源数据库向一个中心数据库复制数据时,这里一定要选择“DELETE DATA Using Restriction Clause”,即是用前面的唯一标识条件对数据操作。否则会造成不同数据源的复制数据互相影响。
开发体会
SQL Server的复制被设计成最小用户干预的实现。一旦设置完成后,基本不需要用户再去进行处理。虽然初始同步时SQL Server自动进行的,但在实际应用中,广域网的连接(DDN、X.25)常常不能完成这种同步,所以需要我们手工完成初始同步,例如自己把源数据库BCP数据导出,再导入到订阅数据库中,选择初始同步的模式为No Data Synchronization。
SQL Server的复制是基于事务的。在广域网的连接速度比较慢的情况下,不要做一次更新很多记录的操作,例如一条无条件限制的UPDATE语句,在源数据库中可能影响1000条记录,但在事务传送中,会发出1000条UPDATE语句并作为一个事务传出,很容易造成复制失败。这时最好把更新的操作分解得很小,每一条更新语句都作为单独的事务传送。
适当增大分发数据库的大小,保证在网络不同的情况下,分发数据库有足够的空间保存更新操作的事务。
及时清除分发数据库。设置复制后,SQL Server会生成一个清除分发数据库的任务,负责把分发数据库中分发到订阅服务器的事务删除。但缺省情况下,清除任务是每天夜里105执行,如果你的SQL Server服务器不是24小时开机,注意把该任务调整到开机的时间范围内内执行。
责任编辑:cyth