复制是一组技术,它将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库间进行同步,以维持一致性。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及分发给远程或移动用户。
名词解释:
1、初始快照:就是将发布服务器上的发布表里面的数据全部复制到订阅服务器订阅的表中
2、发布是一个数据库中的一个或多个项目的集合。 将多个项目分组成一个发布,使得更便于指定一组作为一个单元复制的、具有逻辑关系的数据库对象和数据。
3、 订阅服务器:订阅服务器是接收复制数据的数据库实例。 订阅服务器可以接收来自多个发布服务器和发布的数据。 根据所选的复制类型,订阅服
务器还可以将数据更改传递回发布服务器或者将数据重新发布到其他订阅服务器。
数据库复制主要提供了三种复制方式:
一、事务性复制通常从发布数据库对象和数据的快照开始。创建了初始快照后,接着在发布服务器上所做的数据更改和架构修改通常在修改发生时(几乎实时)便传递给订阅服务器。数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,因此,在发布内部可以保证事务的一致性。
事务性复制通常用于服务器到服务器环境中,在以下各种情况下适合采用事务性复制:
- 希望发生增量更改时将其传播到订阅服务器。
- 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。
- 应用程序需要访问中间数据状态。例如,如果某一行更改了五次,事务性复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。
- 发布服务器有大量的插入、更新和删除活动。
- 发布服务器或订阅服务器不是 SQL Server 数据库(例如,Oracle)。
二、合并复制与事务性复制相同,通常也是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。
合并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:
- 多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。
- 订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。
- 每个订阅服务器都需要不同的数据分区。
- 可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。
- 应用程序需要最终的数据更改结果,而不是访问中间数据状态。例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。
三、快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。快照复制是完全按照数据和数据库对象出现时的状态来复制和分发它们的过程。快照复制不需要连续地监控数据变化,因为已发布数据的变化不被增量地传播到订阅服务器,而是周期性的被一次复制。 快照复制用于为事务复制和合并复制提供初始数据集;在适合数据完全刷新时也可以使用快照复制。
简单的说一下他们的区别:
快照复制和事务复制是单向的,合并复制是双向的
快照复制每次都把所有的数据同步一次,事务和合并复制都是一直保持联系,只更新修改的部分
快照复制对表结构没有要求,事务复制要求表有主键,合并复制要求表有 rowguid 列
这里主要讲解合并复制,步骤如下:
1、首先在我们的发布服务器上建立一个发布,Replication->Local Replications->New Replication
选择我们要发布的数据库,点击下一步:
选择第四个——合并发布
这里是核对你的订阅服务器的数据库类型,我现在的是2008的,所以勾选2008,然后下一步
这里选择我们想要发布的表和视图,勾选后连续点击下一步到如下界面:
这里是创建一个快照,同时确定安排快照代理执行的周期,如果需要即时的同步的话,可以把第二个框勾掉不要,我这里勾掉不要,然后下一步:
点击安全设置:
注意上面第二个红框填写的是当前发布服务器的帐号和密码,然后点击ok,然后一直下一步,最后填写一个发布的名字(我的是demo),最后完成,
这样我们的发布服务器上的一个发布已经完成了,接下来在我们的订阅服务器上创建“订阅”。
1、在订阅服务器上Replication->Local Subscriptions->New Subscriptions
选择Find SQL Server Publisher然后登录我们的发布服务器,选择我们的名字为demo的”发布“
选择我们的需要订阅到数据库的名称,我这里是demo
点击红圈中的按钮
这里红框中填写的帐号和密码是我们订阅服务器的帐号的和密码
这里我们选择Run continuously也就是一直和服务器保持联系
我们这里选择Immediately,这样我们修改任何一个服务器的时候,他都是立刻进行更新
点击finish然后就完成了我们订阅服务器的配置。
到此为止,我们的合并复制的发布和订阅服务器已经配置完成,这是我们无论在我们发布的数据表中或者订阅的数据表中写入数据,他们都会同步更新。