/ E1 {2 l8 S- v; ]& D' n6 K! p! l
3.使用专用的SQL Server数据库作为复制数据的可靠队列
1 W3 T& D7 f" ^5 P: L! q
# j: }& P8 c. k! s) u5 r6 { SQL Server的复制采用“松散一致”复制模式,其特征是源数据与拷贝数据之间并不是在任何时刻都保持完全一致,它们之间有一个延时。源数据库的变化,不是立刻反应到订阅数据库中,而是把产生变化的事务写入一个专门的分发数据库中(Distribution)。当这些事务累计到设定值时,由事务分发器(Distribution task)把事务送到订阅服务器中。订阅服务器再执行这些事务来保持源数据与拷贝数据的一致。分发数据库完成了一种缓冲的作用,当因网络或其他问题使复制不能完成时,源数据的变化会一直保存在分发数据库中直到问题解决再自动把所有保存的事务送出,并且复制两端的数据仍保持一致。这种方式使SQL Server数据的复制有极大的自适应性和可靠性,最大限度减少用户的干预。
7 N1 T, c" a, L- ~# k
2 ^" S7 P1 n4 j% m' g3 z SQL Server的复制主要组成部分有:日志阅读(Log Reader)、初始同步(Synchornization)、数据分发(Distribution)和分发数据库。 & A% u1 Y2 S ? u- s
& [& X- U; N4 m: E+ E+ z& | 初始同步是复制真正开始执行的第一步。类似于开始传送事务前,先给源数据库照一个快照,把传送事务前的那一时刻的数据拷贝到订阅数据库。其实质就是把那时刻的数据生成BCP文件,通过网络传到订阅数据库。完成初始同步后,再开始由日志阅读初始同步以后的事务,并由数据分发过程传送分发数据库中的事务到订阅服务器中去。 7 n) o p+ R: x( i4 X) p) O
- o9 @) a% Q6 _ 复制的实现
$ h$ {5 O9 N' Q
t) v0 R4 m4 ~( } R7 g 下面我们结合在西安市国家税务局内部网络信息系统的实例,介绍SQL Server6.5的配置以及其中需要注意的事项。
" q f7 h- _( C. w9 m& q1 ?) _ 8 S$ W( D: a3 f& y4 E2 y8 A
复制前的准备
2 Y" I0 \6 E1 v' r& Q) _3 u 8 S F& `- W+ y2 k7 b
(1)使用一种字符集:市局和分局的SQL Server的配置使用一种字符集。 9 N4 j1 Z4 p$ V k. P3 u# s# Q3 ]
( P9 o' Q K4 ]* V/ q
(2)允许分局服务器有足够的事务日志空间。
1 o3 X9 W; J! b, f. Z; T ( }; C& L1 d5 h1 K
(3)最好设置MSSQL Service 和SQLExecutive Service Auto Start at Boot time。 # @* g \, Y& v7 d6 t* i& b. ]
. b/ y$ Z |: ^/ x1 ~$ i 复制的安装 * f& E5 S* R4 x( P: V( u' H
' f* W; L8 V3 F! l! m4 c (1)运行Microsoft SQL Enterprise Manage,在Server Manager窗口中选择源数据服务器。 7 p- ]) L1 \1 n* K3 J0 G- z
2 |% i9 ]! ~8 ]$ H; t (2)从Server选单选择Replication Configuration, 然后从所出现的子选单选择Install Publishing。出现Install Replication Publishing 对话框。 1 H8 d3 u. p: T- a- S; L/ {
/ n# N* ? J/ M; t! I (3)选择Local-Install New Local Distribution Database选项(配置该服务器充当自身的分发服务器)。
* [; a* }0 P( `7 f9 @7 W$ {
4 Z( q# Z% w2 F9 r 在为分发数据库建立分发数据库设备时,要根据源数据的更新率估计分发数据设备的大小,尽量把分发数据库建大些。 7 l) B( ]% L) w0 A7 m& [' j. c
* S7 v+ Y1 a! I! M: L/ A+ A4 ?0 W
设置出版和订阅服务器和数据库 3 L# m6 j6 A9 Z/ d6 v7 e
; I2 M5 c+ L) q' z3 {, g 在前面的安装分发数据库中,如果在询问是否在本次配置服务器选项对话框中,选择YES,则出现Replication-Publishing对话框。在Enable Publishin to These Servers(左边列表)目录中选择订阅的服务器,在本实例中为信息中心的SQL Server。在Publishing Database下(右边列表),选择被允许出版数据的数据库。 8 g- a5 f" k, @6 C) v* ~/ o( E
9 B6 C+ p. ]9 B( X8 X
回到Server Manager,选择订阅服务器,从Server选单选择Replication Configuration;然后从出现的下拉选单选择Subscribing,出现Replication-Subscribing对话框。在左侧的Publishing Server框中选择源数据SQL服务器,在右侧的框内选择拷贝的数据库。</p>
# {/ Q7 j2 c/ p复制数据的设置
5 ]' }, B. m" s2 l$ g6 E 2 \( D9 B' K( m: P k0 j
安装SQL Server复制并设置复制的服务器和数据库后,要进行出版物的设置,就是指定复制数据库中那些表要进行复制,一个出版物可以包括很多表。 , Y# W" V2 o9 m2 O: Z$ b( m, R
: `& Q6 Y* k7 f* k: G/ z4 y 从Server Manager窗口,选择源数据服务器。 5 N) c9 r5 P0 g
& C% I* R, ^: E) R6 l 从Manage选单,选择Replication,然后选择Publication对话框。 , e. c: i6 \9 m7 x1 o; ?4 `: P
x2 v/ h5 f% j" {; |) d/ { 选择“NEW”,出现Edit Publications对话框。为该复制数据设置一个名字,选择要复制的表到右边的列表。
6 d# A0 @* I( x1 u. K- \- l% j* t/ l! n) K% h+ g
/ O4 H; M/ R! g; Z* l& t% V" l 这里要注意到这样一个情况,因为我们要从多个源数据库向一个中心服务器数据库复制数据,一定要保证源数据之间不会互相影响。复制的表中要有字段定义数据的来源。 % i7 m, P9 C7 v: n o) v0 g6 V% a6 F
, A6 Q. X1 y/ k/ ~. N
在Edit Publications对话框,选择右边列表中要复制的表,按“Edit”按钮,进入Manage Article对话框,在最下面的Restriction Clause中输入标识唯一源数据的条件。 - ?/ @- l8 D3 Y! q
4 m8 {( W/ K% G4 v1 i
在Manage Article对话框中,选择Scripts标签。按“Generate”按钮,出现模式源设置画面。这里需要设置初始同步的模式。在多个源数据库向一个中心数据库复制数据时,这里一定要选择“DELETE DATA Using Restriction Clause”,即是用前面的唯一标识条件对数据操作。否则会造成不同数据源的复制数据互相影响。 |