You are on page 1of 47

SQL Server 数据库同步方案

情缘

SQL Server 数据同步


技术方案

V1.00

1
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

2
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

目 录
1 数据库同步概述....................................................................................4
1.1 MSSQL 数据库同步的必要性.......................................................4
1.2 MSSQL 数据库同步的可行性.......................................................4
1.2.1 MSSQL 已经提供复制订阅相关功能.................................4
1.2.2 网络宽带的保证,通过 FTP 可以快速下载数据包..............4
1.2.3 可以使用多种协议实现数据库的同步操作........................4
2 数据库同步前提条件.............................................................................5
2.1 数据库故障还原模型必需为完全还原模型....................................5
2.2 所有被同步的数据表都必须要用主键..........................................5
2.3 计算机名来注册服务器..............................................................6
2.4 SQLServer 必须启动代理服务.....................................................6
3 SQLServer 数据同步相关定义.................................................................8
3.1 复制简介..................................................................................8
3.2 复制类型..................................................................................9
3.2.1 快照发布.....................................................................10
3.2.2 事务发布.....................................................................11
3.2.3 具有可更新定于的事务发布..........................................12
3.2.4 合并发布.....................................................................12
4 操作步骤............................................................................................14
4.1 SQL 服务启动..........................................................................14
4.2 SQL Agent 代理服务登录模式...................................................14
4.3 SQL 发布服务器别人配置.........................................................16
4.4 修改 Hosts 文件映射 IP............................................................16
4.5 创建发布................................................................................18
4.6 指定发布服务器......................................................................19
4.7 指定快照存储位置...................................................................20

3
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.8 指定发布复制的数据库............................................................21
4.9 指定发布的类型......................................................................22
4.10 选择需要同步的数据库表.........................................................23
4.11 没有主键的数据库表发布.........................................................24
4.12 筛选同步数据..........................................................................25
4.13 代理运行定时设置...................................................................26
4.14 代理安全性设置......................................................................27
4.15 发布名称................................................................................28
5 订阅服务器定语发布...........................................................................29
5.1 修改 FTP 连接..........................................................................29
5.2 查看发布程序运行状况............................................................30
5.3 新建订阅................................................................................31
5.3.1 选择发布服务器...........................................................32
5.3.2 选择要订阅内容...........................................................33
5.3.3 分发代理服务器选择....................................................33
5.3.4 选择订阅的数据库.......................................................34
5.3.5 分发代理安全性设置....................................................35
5.4 常见问题................................................................................35
5.4.1 单个用户访问..............................................................35
5.4.2 无法打开明确指定的数据库..........................................36
5.4.3 进程无法冲 FTP 站点下载文件.......................................37
5.4.4 FTP 站点文件存放位置.................................................38
5.4.5 不能使用事务..............................................................38
附录一 术语解释.......................................................................................41

4
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

1 数据库同步概述

1.1 MSSQL 数据库同步的必要性

1. 数据库实时备份同步,在数据库服务器出现问题时可以有正常工作时的
备份
2. 数据库实时备份同步,在数据库访问压力过大时,可以用来做负载均衡
3. 数据库实时备份,数据库服务器可以无间断的无损失迁移
4. 当数据库遭受攻击或者服务器出现问题可以启用同步机器应急
5. 可以实现数据库之间的合并

1.2 MSSQL 数据库同步的可行性

1.2.1 MSSQL 已经提供复制订阅相关功能

1.2.2 网络宽带的保证,通过 FTP 可以快速下载数据包

1.2.3 可以使用多种协议实现数据库的同步操作

5
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

2 数据库同步前提条件

2.1 数据库故障还原模型必需为完全还原模型

打开 SQLSERVER 企业管理器选择对应的数据库单击右键选择属性
选择”选项” 故障还原模型选择完全还原模型。

2.2 所有被同步的数据表都必须要用主键

数据库被同步的数据表必须有主键,因为大家都习惯使用自增列作为主键 ,
这里不一定要指定主键为自增列。主键主要用于事务复制

6
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

2.3 计算机名来注册服务器

发布服务器,分发服务器和订阅服务器都必须使用计算机名称来进行
SQLServer 服务器的注册。在企业管理器里面注册服务器,如果需要作为发布服
务器,分发服务区和订阅服务器都必须使用服务器名称进行注册,不得使用 IP
地址以及别人注册,也不得使用带有端口号!

7
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

2.4 SQLServer 必须启动代理服务

SQLServer 必须启动代理服务,且代理服务器必须以本地机器的账号运行

8
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

3 SQLServer 数据同步相关定义

3.1 复制简介

复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,
并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局
域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及
分发给远程或移动用户。

一组 SQL SERVER2005 复制有发布服务器、分发服务器、订阅服服务器组成,


他们之间的关系类似于书报行业的报社或出版社、邮局或书店、读者之间的关系
以报纸发行为例说明,发布服务器类似于报社,报社提供报刊的内容并印刷,
是数据源;分发服务器相当于邮局,他将各报社的报刊送(分发)到订户手中 ;
订阅服务器相当于订户,从邮局那里收到报刊。在实际的复制中,发布服务器是
一种数据库实例,它通过复制向其他位置提供数据,分发服务器也是一种数据
库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特
定数据。每个发布服务器都与分发服务器上的单个数据库(称作分发数据库)相
关联。分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为
从发布服务器向订阅服务器移动的数据起着排队的作用。在很多情况下,一个数
据库服务器实例充当发布服务器和分发服务器两个角色。这称为“本地分发服务
器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多个发
布服务器和发布接收数据。

9
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

数据库复制结构图

10
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

3.2 复制类型

3.2.1 快照发布

快照复制就是在某一时刻对出版数据库进行一次照相,生成一个描述发布
数据的瞬时状态的静态文件,然后再规定的时间复制到订阅数据库
快照发布特点:
(1) 不需要实时监控和跟踪发布数据库发生的数据库变化
(2) 复制的内容不是 Insert,Update,Delete 语句数据,也不是被修改的数据
(3) 对网络资源要求较高,而且要保证传输的可靠性

11
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

(4) 对订阅数据库进行一次刷新,将发布数据库完全重新复制一份到订阅数
据库

适用条件:
(1) 很少有数据更改
(2) 在一段时间内允许具有相对发布服务器已过时的数据副本

(3) 复制少量数据

(4) 在短期内出现大量更改

工作机制:
(1) 发布服务器,将要发布的数据库整个做一个快照

(2) 订阅服务器的快照代理程序把发布服务器的快照读取过来,放在本地的快照文件

夹内
(3) 订阅服务器的发布代理程序把快照文件夹中的快照发布到订阅服务器上。历史记录

和快照记录在分发服务器中

12
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

3.2.2 事务发布

复制的一种类型,在订阅服务器上应用数据的初始快照,然后当发布服务器上发生数

据修改时,捕获个别的事务并传播到订阅服务器。
适用环境:
(1) 希望发生增量更改时将其传播到订阅服务器。

(2) 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的

滞后时间较短

13
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

(3) 应用程序需要访问中间数据状态,而不只是响应该行最终的数据更改.

(4) 发布服务器有大量的插入、更新和删除活动

(5) 发布服务器或订阅服务器不是 SQL Server 数据库

3.2.3 具有可更新定于的事务发布

在订阅服务器中更新数据时,首先将数据传播到发布服务器,然后再传播到其他订阅

服务器。如果使用立即更新,将使用两阶段提交协议立即传播更改。如果使用排队更新,更

改将存储在队列中;当网络连接可用时,再在发布服务器中异步应用排队事务。由于更新

异步传播至发布服务器,所以发布服务器或另一台订阅服务器有可能更新同一数据,而在

应用更新时会发生冲突。将根据创建发布时设置的冲突解决策略检测和解决冲突。
两种可更新订阅:

(1) 立即更新。必须连接发布服务器和订阅服务器才能在订阅服务器中更新数据。

(2) 排队更新。不必连接发布服务器和订阅服务器即可在订阅服务器中更新数据。可以

在订阅服务器或发布服务器脱机时进行更新

3.2.4 合并发布

合并发布(复制)通常也是从发布数据库对象和数据的报表快照开始。并用触发器跟踪在

发布服务器和订阅服务器中所做的后续数据更改和架构修改。订阅服务器与发布服务器在

连接到网络时进行同步,并交换自上次同步以来发布服务器和订阅服务器间发生变化的所

有行。允许站点对已经复制的数据进行匿名更改,并且在晚些时候合并更改和更加需要解

决冲突。(数据合并可能导致主键冲突)

适用的情况:

(1) 多个定语服务器可能会在不同的时间更新同一数据,这些更改将传播到发布服务

14
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

器和其他订阅服务器。
(2) 订阅服务器需要接手数据,脱机更改数据,并且在以后与发布服务器和其他定语

服务器同步更改
(3) 订阅服务器都需要不同的数据分区

(4) 可能会发生冲突,如果发生冲突,需要具备检测和解决冲突的能力

(5) 应用程序需要最终的更改结果,而不是访问中间的数据状态。

工作原理:
合并复制允许不同的站点自主工作,然后将更新合并成一个统一的结果,由于更新是

在多个服务器中进行,因此统一数据可能由发布服务器和多个定语服务器进行了更新,

可能会出现冲突,合并复制提供解决冲突方案。

15
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

16
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4 操作步骤

4.1 SQL 服务启动

使用数据库同步至少启动两个服务

如上图所示,需要启动数据库实例服务器以及代理服务,这里要注意一下
登录验证方式。

4.2 SQL Agent 代理服务登录模式

SQL Agent 使用本地账号登录模式,如果服务为非本地账号登录模式需要

17
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

修改配置。

这里是使用的机器管理员来登录的,最好设置一个机器登录密码。一定要注
意这里不是 SQL 登录的账号而是机器登录的账号。
然后引用重新启动该服务

18
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.3 SQL 发布服务器别人配置

在这里配置 SQLServer 发布服务器的别名,注意这里填写的端口号,SQLServer


默认是 1433 端口。
使用这种方式配置之后就可以使用别名来登录远程机器了,而非 IP。因为创建
发布不能使用 ip
当然我们也可以使用 Hosts 文件来映射,具体见下面介绍

4.4 修改 Hosts 文件映射 IP

找到 C 盘 hosts 文件,该文件在 C:\Windows\System32\drivers\etc\目录下



用记事本打开这个文件修改如下内容

19
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

这里配置了机器名的映射,可以参考一下

20
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.5 创建发布

21
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.6 指定发布服务器

可以使用发布数据库机器作为分发服务器,一般情况我们也是这么做的,当然
我们也可以使用其他的机器作为分发服务器,这里就需要自己配置分发服务器

22
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.7 指定快照存储位置

这里指定了快照发布的位置,默认是图上所示位置,我们可以手工修改这个存
储的位置,建议修改

23
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.8 指定发布复制的数据库

24
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.9 指定发布的类型

这里使用事务发布作为案例,事务发布的特点已经介绍过了。

25
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.10 选择需要同步的数据库表

26
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.11 没有主键的数据库表发布

没有主键是不能进行事务发布的,上面已经提到过了!

27
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.12 筛选同步数据

数据库表中如果有些表字段没有指定发布,则在筛选的时候是不允许的。

28
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.13 代理运行定时设置

29
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

上面的设置自己看着办

4.14 代理安全性设置

这里选择在 windows 账号下运行:


进程账号: 选择发布服务系统登录账号

连接到发布服务器:
使用 SQL server 登录名:
账号就是数据库登录账号密码

以上两个账号都是填写发布服务器的账号,这里和后面的账号很容易混淆,一
定要注意

30
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

4.15 发布名称

填写名称之后直接点击完成即可

31
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5 订阅服务器定语发布

5.1 修改 FTP 连接

在数据同步的时候,发布服务器需要生成数据快照,保存在本地一个文件
夹中。这个当然没有任何问题,但是在订阅服务器需要能够读取这个文件夹
中的快照文件包。
在同一个网段内,我们使用共享文件夹的确可以读取到这些文件,如果是
公网和内网之间的同步,是公网非一个网段同步怎么办,我们这里可以使
用 FTP 来连接下来

选择本地发布右键属性:

选择允许订阅服务器使用 FTP 下载快照文件。这里使用 ftp 就可以很好的解决非


同一网段读取快照文件的问题。
上面 FTP 的相关信息可以根据自己的需要设置,并且这里一定要注意 FTP 根文

32
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

件夹开始的路径一定要指向快照生成的位置,填写路径比如”/ftp/”. 应用确定
之后会提升是否要重新生成快照文件,这里重新生成一次就好了,然后到客户
机使用 FTP 客户端下载一次看是否可以,当然同步的时候不是使用客户端下载。

FTP 服务端很多,在发布服务器上新建 FTP 站点的方式很多,Windows2003 有


自带的 ftp 服务,也可以使用 Server_U,总之要能够下载快照文件就可以。

5.2 查看发布程序运行状况

选择发布右键查看快照代理运行状态

如果数据很大,这里生成的快照可能会很慢的,点击监视可以查看具体运行状
况。

33
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

在这里面可以看到运行的状况,如果任何一个发布出现文件,上面都会显示警
告的。

5.3 新建订阅

34
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.3.1 选择发布服务器

选择发布服务器,即新建发布的那台机器

35
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.3.2 选择要订阅内容

36
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.3.3 分发代理服务器选择

这里可以选择运行订阅服务器作为代理 也可以使用分发服务器作为代理。一般
情况选择订阅服务器作为代理,这样避免所有的服务都运行在发布服务器上造
成发布服务器压力大!

37
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.3.4 选择订阅的数据库

这里也可以选择多个订阅服务器,上面已经解释过发布订阅的一个构造,订阅
服务器就好比报刊的读者,某一个发行报刊可以有多个读者。

38
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.3.5 分发代理安全性设置

选择在 windows 账户下运行,用户名和密码填写发布服务器的用户名和密码

连接到分发服务器使用 SQL Server 登录名:这里填写发布服务器,也就是上面


设置的那台机器的。
设置好之后下一步下一步完成就可以了!

39
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.4 常见问题

5.4.1 单个用户访问

出现这个问题,大家很多人都应该遇到过。解决办法:
use master
go
declare @SQL varchar(max)
set @SQL=''
select @SQL=@SQL+';kill '+RTRIM(spid)
from master..sysprocesses
where dbid=DB_ID('DBNAME')
exec (@SQL)
go
alter database DBNAME set multi_user

40
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.4.2 无法打开明确指定的数据库

数据库日志中显示,服务打开明确的数据库,这里就要检查数据访问权限是否
足够。
当然还有一种情况

如果出现这个问题尝试关闭这个服务试试!不能确保一定是这个问题,但是这
个服务也能够引起这样的问题。

41
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.4.3 进程无法冲 FTP 站点下载文件

这个问题遇到的太多了,出现这种问题很多,下载文件过大下载中断,但是本
人做这个同步的时候因为涉及到多台机器,有些机器是正常运行有些机器出现
这个问题,在使用万网的机器的时候就会有这样一个问题,花费了很长时间这
是万网对端口禁用的问题

42
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

5.4.4 FTP 站点文件存放位置

这里一定要注意,FTP 站点访问的快照文件如上图所示,一定要指定在规定的
目录下,否则是下载不到快照文件的

5.4.5 不能使用事务

上面使用事务复制,多台机器之间建立事务关系,这应该属于分布式事务,所
以在 windows 上必须开启相关服务!

43
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

这个服务需要开启

还有 MSDTC 也要开启相关设置。
在命令行输入 dcomcnfg 命令,我的电脑 MSDTC安全配置

44
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

以上是 windows2003 上面的配置图

45
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

这个是 win7 系统配置效果图

订阅服务器和发布服务器都要开启这个服务,这里要注意一下!

46
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/
SQL Server 数据库同步方案
情缘

附录一 术语解释

47
作者: 贺 臣
Q Q: 821865130
博客: http://www.cnblogs.com/qingyuan/

You might also like