SQL Server 2000设置和使用数据库复制
复制的概念
复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
为何使用复制?
复制可用于许多方面。例如,复制是维护报告服务器的完美解决方案。你可以使用复制将必要的数据对象传送到一个报告数据库上(最好是一台单独的服务器),以满足公司的报告需求,并同时减轻OLTP服务器的负担。当你把数据复制到报告服务器中时,复制还允许你进行数据传输,这意味着你只能复制所需表的行或列。除表外,你还可以复制对象,如视图、用户定义的函数、以及存储过程。在要复制的表中,你还可以包括限制、索引和触发器。
除报告作用以外,你还可以使用复制在生产服务器中标出一些作业。在这种情况下,应该将数据对象从生产环境复制到单独一台服务器中。所需的作业在这台服务器上发生。一旦完成必要的作业,进行的改变就被传送回生产服务器,从而有效地缓解生产服务器的作业负担。
复制的另一优势在于,它允许你将数据复制到不同的地理位置以便使用。一个组织的分公司就可以采用这种方法。总公司对“主”数据库进行维护,每个分公司拥有这个数据库的一个拷贝。分公司能够查看并修改分配给他们的数据库,任何修改可以在配置时间返还总公司数据库,并与其合并。然后总公司将这些修改分发到所有其它分公司。允许每个分公司拥有自己独立的数据库,并将改变在休息时间返还,这样可以有效地降低总公司与分公司之间的网络流量。
复制的基本元素包括
出版服务器、订阅服务器、分发服务器、出版物、文章。
复制的工作原理
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器。
复制类型
共有三种类型的复制,每种适用一种特别的需要。下面简单说明这三种复制:
· 快照复制:这是最简单的复制类型。它在特定的时刻瞬间将数据库对象发送到订阅服务器。这种复制产生非常少的额外开销,因为系统不会一直检查复制变化。但是,被复制的对象仅与最近的快照同步。
· 事务复制:这种形式的复制以最初的快照应用于目的数据库开始。当目的数据库的数据被修改时,变化返还源数据库进行合并。然后,源数据库可以向其它目的数据库发布这些变化。这允许这些目的数据库进行离线工作,并在必要时返还源数据库进行合并。
· 合并复制:通过这种形式的复制,事务日志上发生的任何改变立即提交给订阅服务器。它允许你根据为数据配置的滞后时间,使源数据库与目的数据库“几乎”保持同步。因为变化几乎实时同步,这种复制产生大量的额外开销。事务型复制还可实现双向支持。目的数据库上的数据改变能够传送回源数据库。
以复制为高实用性的解决方案
在我看来,复制并不是一个非常适合的高实用性解决方案。复制有出错的倾向。这些错误一般都是小错误,很容易得到修复,不过它们仍然还是错误。而且,与日志传送一样,对复制数据库的故障修复需要手工操作,它还要仔细规划,费时而且可能会遗失数据。
实现步骤
只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。
第一步: 配置发布服务器 在发布服务器上执行以下步骤:(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他SQLServer的服务器(3) [下一步] 设置快照文件夹 一般采用默认http://www.cnblogs.com/dam889/admin/file://servername/d$/Program Files\Microsoft SQL Server\MSSQL\ReplData。事先要建一个属于Administrator组的用户,让其能够访问此路径(4) ** [下一步] 自定义配置 可以选择: 是,让我设置分发数据库属性启用发布服务器或设置发布设置 否,使用下列默认设置 建议采用自定义设置(5) [下一步] 设置分发数据库名称和位置 采用默认值(6) [下一步] 启用发布服务器 选择作为发布的服务器(7) [下一步] 选择需要发布的数据库和发布类型(8) [下一步] 选择注册订阅服务器(9) [下一步] 完成配置 第二步:创建出版物 发布服务器上(1)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第二个事务发布
(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器 (5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
注意:如果前面选择了事务发布 则再这一步中只能选择带有主键的表 在“项目默认值””表项目”中设置登录用户为:sfcuser,更新所有项目。“存储过程项目”和“视图项目”同类设置。
(6)选择发布名称和描述 (7) **自定义发布属性 向导提供的选择:是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性否 根据指定方式创建发布 建议采用自定义的方式 (8)[下一步] 选择筛选发布的方式 (9)[下一步] 可以选择是否允许匿名订阅 A 如果选择署名订阅,则需要在发布服务器上添加订阅服务器方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加 否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅如果仍然需要匿名订阅则用以下解决办法 [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅 B 如果选择匿名订阅,则配置订阅服务器时不会出现以上提示 选匿名订阅
(10)[下一步] 设置快照 代理程序调度这个要根据具体需求来定。
(11)[下一步] 完成配置 当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。共享数据库的标识多了一个手状,如下图:
第三步:订阅服务器的配置 A 强制订阅的配置(默认选此)在发布服务器上(1) [企业管理器]->[复制]->[发布内容]->[属性]->[订阅]->[强制新建]
然后出现强制订阅向导 (2) 选择订阅服务器->订阅数据库名->设置分发代理程序调度->初始化订阅->启动要求的服务(发布服务器的agent要启动)->完成即可
B 请求订阅的配置订阅服务器上执行以下操作 (1) 从[工具]下拉菜单中选择[复制]子菜单的[请求订阅](2) 选择[请求新订阅] 打开请求订阅向导(3) [下一步]选择已注册的发布(4) [下一步]选择创建订阅的数据库(5) [下一步]选择匿名订阅或署名订阅(6) [下一步] 初始化订阅 选择初始化架构和数据(7) [下一步]选择快照文件的存放位置 一般采用发布服务器的默认快照文件夹(8) ** [下一步]设置分发代理程序调度 可以选择订阅更新内容的间隔(9) [下一步]系统会提示检查发布服务器的代理服务的运行状态(10) [下一步] 完成配置结束语:至于是使用强制订阅(推方式)还是请求订阅(拉方式),要看分发服务器和订阅服务器的工作负荷,但两者有多大差别,未经过具体测试。建议在强制订阅以后,再试验请求订阅,以获取复制的最佳性能。
完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表—。
这是日常的管理监控界面:
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/panys/archive/2007/11/22/1897354.aspx