1、SQL Server 2005 相对于 SQL Server 2000 来说,无论是性能还是功能都有一个相当大的提高 ,甚至可以用“革命” 来形容这一次升级。SQL Server 2005 使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005 为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介绍 SQL Server 2005 复制功能。一、复制简介复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Inte
2、rnet 上将数据分发到不同位置以及分发给远程或移动用户。一组 SQL SERVER2005 复制有发布服务器、分发服务器、订阅服服务器(图 1 复制服务器之间的关系图)组成,他们之间的关系类似于书报行业的报社或出版社、邮局或书店、读者之间的关系。以报纸发行为例说明,发布服务器类似于报社,报社提供报刊的内容并印刷,是数据源;分发服务器相当于邮局,他将各报社的报刊送(分发)到订户手中;订阅服务器相当于订户,从邮局那里收到报刊。在实际的复制中,发布服务器是一种数据库实例,它通过复制向其他位置提供数据,分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。
3、每个发布服务器都与分发服务器上的单个数据库(称作分发数据库)相关联。分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。这称为“本地分发服务器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多个发布服务器和发布接收数据。(图 1)复制有三种类:事务复制、快照复制、合并复制。事务复制是将复制启用后的所有发布服务器上发布的内容在修改时传给订阅服务器,数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,在发布内部可以保证事务的一致性。快照
4、复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。合并复制通常是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。二、复制实例这里以配置一个事务复制来说明复制配置过程 。试验在同一台机器的二个实例间进行,实例名分别是 SERVER01、SERVER02 。将 SERVER01配置发布服务器和分发服务器(也就是前面提到的“本地分发服务器 ”),SERVER02 配置为订阅
5、服务器。在本例中将 SERVER01 中一个 DBCoper 库中 person 表作为发布的数据,在发布前请确保 person 表有主键、SQL SERVER 代理自动启动、发布数据库是日志是完整模式。第一步:完全备份 SERVER01 DBCopy 数据库,在 SERVER02 上恢复 DBCopy 数据库(复制前的同步,使用发布的源和目标数据一致)第二步:在 SERVER01 上设置发布和分发 A 在 SERVER01 的复制节点 本地发布右键选择新建订阅(图 2)()(图 2)B 在新建发布向导中首先要求选择分发服务器,本例选择本机作为分发服务器,选择默认值。(图 3)(图 3)C 向
6、导第三步要求选择快照的路径,一般情况下选择默认路径D 向导第四步选择发布的数据库( 如图四),选择 DBCopy(图 4)E 接着选择发布的类型,这里选择事务复制(如图 5)(图 5)F 选择发布的内容(PERSON ) ,这里不仅可以发表,还可以发布其他的数据库对象,比如函数。在选择某一个表之后还可以选择发布某一列或几列。在这个步骤下一个界面中可以选择要发布的行。(图 6)G 设置发布的内容之后设置 运行 SQL 代理的账号。设置如下:(图 7)H 设置上一步之后,给复制起个名字 PersonCopy。到此为止,发布和分发已配置成功。(如图 8)(图 8)第三步:配置订阅。订阅有两种方种,一
7、种是由发布服务器向订阅服务器“推”数据,由订阅服务器去请求订阅数据。本例在 SERVER02 上设置请求订阅。A 第一步在 SERVER02 复制节点右击订阅,新建订阅(图 9)(图 9)B 选择发布服务器, 在下拉列表框中选择查找 SQL SERVER 发布服务器,选择 SERVER01,就可以看到刚才新建的发布 PersonCopy。如图(10)(图 10)C 选择订阅方式。 (图 11) 这里选择请求订阅(图 11)D 选择订阅的本地数据库(如图 12) 。(图 12)E 设置完本地数据库之后要求设置运行代理的安全性,设置成 SQL 代理账号。完成以上设置后,订阅已设置完成。在 SERV
8、ER01 表中插入一条新记录后,在 SERVER02 中去检查是否同步过来。一般来说,几乎 SERVER01 执行完了,SERVER02 就可以看到更新后的数据。注:1 事务性发布的表中必须要有主见2 计算机名与 SQL SERVER 中识别的服务器名不一样的情况,次试验也会失败。可以用此脚本同步计算机名if serverproperty(servername) servername begin declare server sysname set server = servername exec sp_dropserver server = server set server = cast(serverproperty(servername) as sysname) exec sp_addserver server = server , local = LOCAL end 执行后需要重启 SQL SERVER 核心服务和代理服务