一:准备条件
<1>软件准备条件
机器A端:SqlServer2005 Management Studio + WinServer 2003 Enterprise (作为发布服务器)
机器B端:Sqlserver2005 Management Studio Express + WinXP(作为订阅服务器)
(可以用别的,不过订阅服务器版本不得高于发布服务器版本)
<2>数据库复制准备条件
1. 所有被同步的数据表尽量要用主键,如果没有主键也没有关系,SqlServer会提示为表自动生成主键
2. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。
3. SQLSERVER必需启动代理服务,且代理服务必须以本地计算机的帐号运行。 不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。
4.如果非同一网段或者远程服务器,或者只能用IP,不能用计算机名的,为对方注册服务器别名。将其对应关系加到本地系统网络配置文件中。文件的具体位置在C:\Windows\system32\drivers\etc\hosts,这里的配置和linux下类似:
192.168.0.1 server 192.168.0.2 client
5.SqlServer 必需启动代理服务,且代理服务必需以本地计算机的帐号运行。
6.发布服务器和订阅服务器都要设置MSDTC ,允许网络访问控制面板--->管理工具--->组件服务--->计算机--->我的电脑(Win7继续找 -->Distributed Transaction Coordinator--->本地DTC),右键属性,找到MSDTC选项卡,点击安全设置,按如下设置即可:
确定,重启MSDTC服务。
二:准备工作的详细操作步骤
1、启动SQL代理(SQLSERVERAGENT)服务。
2、开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务(在SQL Server Configuration Manager里头配置)。
3、设置SQL SERVER 身份验证为混合验证SQL Server和WINDOWS(发布、订阅服务器均设置)
4、发布服务器和订阅服务器互相注册
步骤如下:视图---单击已注册服务器---右击 数据库引擎---新建服务器注册----填写要注册的远程服务器名称----身份验证选“SQL Server验证“----用户名(sa) 密码,对于只能用IP,不能用计算机名的,为其注册服务器别名,见上。
准备工作完成,接下来我们进行发布和订阅的操作
三:发布和订阅
发布
(1)首先我们在发布服务器上(winserver2003)打开SqlServer2005 Management Studio (企业版)。在“对象资源管理器”中找到复制节点,右键--->新建发布(注:如果你的SqlServer是express版本的话,是没有发布这一功能的,只有订阅功能!)
(2)接下来选择要发布的数据库,下一步,选择“发布类型”,我这里选择“合并发布”,
我本人理解的几种发布类型:
- 快照复制:快照复制只在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者的服务器上,快照复制较为简单,其所复制的只是某一时刻数据库的瞬间数据,因此实时性差,而且值得注意的是快照复制并不是不停地监视出版数据库中发生的变化情况,它是对出版数据库进行异性扫描,把所有出版数据中的数据从源数据库送至目标数据库,而不仅仅是变化的数据。如果数据量很大,那么要复制的数据就很多。因此对网络资源要求很高,不仅要有较快的传输速度,而且要保证传输的可靠性。快照复制是最简单的一种复制类型,能够在出版者和订阅者之间保证数据的一致性,快照复制通常使用在以下场合:在一定时间内出现大量的更改操作,但数据总量不大,变化周期较长。
- 事务复制:快照复制是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。那么事务复制使用事务日志来生成将复制到订阅服务器的事务,因为它只复制事务也就是变化,所以滞后也比快照复制低得多,因为将不断地在订阅服务器处得到及时应用。
事务复制有三个组件:
快照代理,它生成架构,数据以及跟踪复制过程所需的数据;
分发代理:它分发快照和随后的命令;
日志读取器代理:它读取发布数据的事务日志。在事务复制中,当出版数据库发生变化时,这种变化就会立即传递给订阅者。并在较短时间内完成(几秒),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种接近实时地从源到目标分发数据的方法。由于某种原因事务复制的频率较高。所以必须保证在订阅者与出版者之间要有可靠的网络连接。
- 合并复制:合并复制是为移动用户设计的,可以在发布服务器或是订阅服务器处执行修改,在合并代理运行时,这些修改将同步,多用于发布服务器与订阅服务都修改数据的情况下。工作原理如下:在要复制的每个表上实现触发器,并使用包含GUID列唯一标识要复制的表中的每一行。对其中的任何一个表进行修改时,都会将更改将记录一个数据表中,在合并代理运行时,它收集数据表中的GUID,这些GUID指出了在发布服务器和订阅服务器处修改过的行。对于只在发布服务器或是订阅端修改的数据则直接进行相应操作,如INSERT,UPDATE,DELETE,如果双方都有GUID则按照用户指定的方式解决冲突,默认发布服务器伏先。
配置复制:
无论是快照复制,事务性复制还是合并复制,创建复制都要经过以下几个步骤:
1.创建发布服务器。选择要发布的服务器。如果有条件的,也可以分发服务器,在这里我们就将发布服务器和分发服务器设置在同一台计算机上。
2.不论是发布服务器还是订阅服务器必须开启代理服务。
3.创建一个发布。即将需要的数据库及对象发布出来。
4.选择一个适合自己的发布类型。
5.设置复制代理及安全,即指定可以运行代理的用户帐号。
(3)下一步,选择订阅服务器类型,选择“SqlServer2005”,下一步,选择发布项目,我们选择表、视图、存储过程等。
(4)接下来设置作业计划,为了方便看到测试效果,我们设置“每隔一分钟”执行一次作业。
(5)设置快照代理安全性,连接到发布服务器时,使用sa
(6)为发布起个名字,完成发布
订阅
接下来,我们配置订阅服务器。订阅服务器是winxp系统,SqlServer版本为SqlServer 2005 Manager Studio Express ,只支持订阅。
(1)同发布,新建订阅
(2)选择发布服务器,找到我们刚刚新建的发布“Test3Copy” ,下一步
(3)选择运行代理的位置,根据需求选择是“推送”还是“请求
(4)接下来同发布类似,这里就不赘述了,订阅执行成功,在订阅数据库和发布数据库的表中都会多出一个字段来,SqlServer自动生成的标志订阅成功