1、概念
快照发布:
发布服务器会定时向订阅服务器传递数据,如果订阅服务器修改过数据,定时传递后订阅服务器的数据修改会全部丢失,全部以发布服务器为准
事务性发布:
发布服务器会定时检查数据是否有修改过,如果有则向订阅服务器传送数据(记录行级)--(即如果订阅服务器修改了某行数据,而发布服务器该行未改,则订阅服务器这一行的记录与发布服务器不同步,直到发布服务器修改这一行数据为止)
具有可更新订阅的事务性发布:
发布服务器与订阅服务器可以独立修改,会定时合并
合并发布:
使用下来,尚未发现与[具有可更新订阅的事务性发布]有何区别,而且用这种方式极点带宽与资源,一般情况下建议用第三种
2、发布步骤
SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介绍SQL Server 2005复制功能。
一、复制简介
复制是将数据或数据库对象从一个数据库复制和分发到另外一个数据库,并进行数据同步,从而使源数据库和目标数据库保持一致。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及分发给远程或移动用户。
一组SQL SERVER2005复制有发布服务器、分发服务器、订阅服服务器(图1 复制服务器之间的关系图)组成,他们之间的关系类似于书报行业的报社或出版社、邮局或书店、读者之间的关系。以报纸发行为例说明,发布服务器类似于报社,报社提供报刊的内容并印刷,是数据源;分发服务器相当于邮局,他将各报社的报刊送(分发)到订户手中;订阅服务器相当于订户,从邮局那里收到报刊。在实际的复制中,发布服务器是一种数据库实例,它通过复制向其他位置提供数据,分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。每个发布服务器都与分发服务器上的单个数据库(称作分发数据库)相关联。分发数据库存储复制状态数据和有关发布的元数据,并且在某些情况下为从发布服务器向订阅服务器移动的数据起着排队的作用。在很多情况下,一个数据库服务器实例充当发布服务器和分发服务器两个角色。这称为“本地分发服务器”。订阅服务器是接收复制数据的数据库实例。一个订阅服务器可以从多个发布服务器和发布接收数据。
(图1)
复制有三种类:事务复制、快照复制、合并复制。事务复制是将复制启用后的所有发布服务器上发布的内容在修改时传给订阅服务器,数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,在发布内部可以保证事务的一致性。快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。合并复制通常是从发布数据库对象和数据的快照开始,并且用触发器跟踪在发布服务器和订阅服务器上所做的后续数据更改和架构修改。订阅服务器在连接到网络时将与发布服务器进行同步,并交换自上次同步以来发布服务器和订阅服务器之间发生更改的所有行。
以下实现复制步骤(以快照复制为例)
一、准备工作:
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户(建立一个隶属于administrator组的登陆windows的用户 SynUser)
2.在发布服务器和订阅服务器上互相注册,在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访)。打开1433端口,在防火墙中设特例
3.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录(保证SynUser对该共享文件夹具有对该文件夹的所有权限)
4.设置SQL 代理(发布服务器和订阅服务器均设置)
SQL Server 配置管理器 (而非 Windows 服务控制管理器 这点很重要 要不就报"客户端没有所需的特权"错!因为 Windows 服务控制管理器无法向 SQL Server 代理的新服务帐户授予所需权限.)
SQL SERVER 2005---右击SQLSERVER AGENT---属性---登录---选择“此帐户“
---输入或选择第一步中创建的WINDOWS 用户
---“密码“中输入该用户密码
5.设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)
步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定
6.开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。
7.在SQL Server中创建步骤1中对应的系统用户登陆名,作为发布数据库的拥有者(设置为dbo_owner和public)。
8.以系统超级用户sa登陆SQL Server建立数据库和表。
9.发布服务器和订阅服务器互相注册
步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。
10.为其注册服务器别名
二、开始:
发布服务器配置(在发布服务器上配置发布和订阅)
1. 选择 复制 节点
2. 右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹“
----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型-------选择订阅服务器类型-------选择要发布的对象------设置快照代理-------填写发布名称。
3.右键本地订阅--------选择发布服务器-------选择订阅方式(如果是在服务器方订阅的话选择推送订阅反之
(订阅报错的话 select @@servername
至此, SQL SERVER 2005 同步复制就完成了。使用复制技术,用户可以将一份客户端的数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性,就无需编程实现客户端和服务器端数据同步了!大大提高了工作效率!
==================================================================================================
发布注意事项
1.如果采用FTP快照方式,则需要设置二处,一是快照文件夹必须指定为ftp文件夹根目录所在的网络路径(比如\\jimmy\RepData,如果二台服务器不在一个局域网内,可以利用VPN技术访问),二是FTP快照设置中,根路径为ftp(默认情况下,采用ftp快照后,会在根目录下,生成一个ftp的文件夹)
2.发布服务器与订阅服务器的Sql Agent代理帐号必须设置的一样,否则不能互访。
3、在“本地订阅”删除订阅后,需要在发布数据库的“本地发布”下面再删除一次。
4、如果停止订阅监听后,需要再次同步,需要注意sql Agent是否启动。没有启动则会报错。同步状态监控会出现:The process was successfully stopped.