环境
操作系统:Windows server 2003 Enterprise Edition Serveice Pack 2
数据库:MSSQL2000
计算机名称:TestServer(发布服务器,分发服务器),TestServerC(订阅服务器)
ServerName:TESTSERVER,TestServerC(可用select @@SERVERNAME 显示出来)
配置之前的准备
1.发布服务器和订阅服务器上分别创建Windows用户sqlagent,密码sql,隶属于administrators,注意要保持一致。
2.在发布服务器TestServer上创建一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为PUB,设置用户sqlagent,权限为完全控制。
3.打开服务(控制面板---管理工具---服务)
---右击SQLSERVER AGENT---属性---登录---选择“此帐户”
---输入或选择第一步中创建的WINDOWS 用户sqlagent,
---“密码“中输入该用户密码sql,
---在 常规--启动类型--选择“自动”,再将该服务重新启动。
4.发布服务器与订阅服务器相互注册。
---步骤如下:
---右击控制台根目录中的SQL Server 组--新建SQL Server注册--填写要注册的远程服务器名称(TestServer或TestServerC)----身份验证选“SQL Server验证“-----用户名(sa) 密码--下一步直到完成。
(对于只能用IP,不能用计算机名的,为其在SQL Server 客户端网络实用工具中注册服务器别名)
配置复制的步骤:
1.建立发布和分发服务器
---右击复制--选择配置发布、订阅服务器和分发--选择分发服务器(TestServer)--选择快照文件夹PUB--自定义配置中可以选择 [否,使用下列的默认配置]--完成。
上述步骤完成后, 会在当前"TestServer" SQL Server数据库里建立了一个distribion库和一个distributor_admin管理员级别的用户(我们可以任意修改密码)
服务器上新增加了四个作业:
[ 代理程序历史记录清除: distribution ]
[ 分发清除: distribution ]
[ 复制代理程序检查 ]
[ 重新初始化存在数据验证失败的订阅 ]
SQL Server企业管理器里多了一个复制监视器, 当前的这台机器就可以发布、分发、订阅了。
2.新建发布
---右击发布内容--新建发布--选择要发布的数据库--选择所需要的发布类型(快照发布、事物发布、合并发布)--再指定要发布的表和存储过程--填写发布内容的名称--再筛选要发布的列或行--选择 [否,只允许署名订阅]--选择快照代理的调度---完成。
上述步骤完成后,
在发布内容里会生成一个刚刚的发布的名称,如果要更改发布内容的需求,可以直接右击该发布内容,选择发布属性,再根据需求自行修改。
在作业里面也会新增两个作业:一个类型为REPL快照,另一个类型为REPL日志读取器。
3.订阅服务器
订阅的方式分为两种模式:推模式和拉模式 (推模式指发布服务器将所有发生修改过的数据复制给订阅者,这种在数据同步性价比较高的场合;拉模式订阅服务器在经过一段时间就会向发布服务器要求复制数据库发生的变化的数据。)
这里我们选择推模式:
---右击要发布的内容--选择强制新订阅--选择订阅服务器(TestServerC)--设置发布代理程序调度中,选择 [ 连续地-提供从发布服务器上一个操作发生到该操作被传播到订阅服务器的最短滞后时间]--初始化订阅中 选择 [是,初始化架构和数据] 并勾上 立即开始初始化处理--下一步直到完成。
上述步骤完成后,在作业里会产生一个 REPL-分发 的作业。
配置完以后,可能出现异常情况:
1.发布服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制没有多大影响,中断期间,分发和订阅都接收到没有复制的事务信息。
2.分发服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制有一些影响,中断期间,发布服务器的事务排队堆积起来,订阅服务器会因为访问不到发布服务器,反复重试 。
等分发服务器sql server服务启动,网络接通以后,发布服务器上的堆积作业将按时间顺序作用到订阅机器上, 会需要一个比较长的时间(实际上是生成所有事务的insert,update,delete语句,在订阅服务器上去执行)
3.订阅服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制影响比较大,可能需要重新初试化。