SQL Server 2000在分布数据管理方面,比以前的版本有了显著的增强和提高。特别是在数据复制方面,从复制的功能,到复制的实现和监测等方面都有了很大的改进。
本章主要介绍以下内容:
n 复制的概念和特点
n 复制与出版
n 创建复制
n 监视复制
n 御载复制
复制是一种实现数据分布的方法,即把一个系统中的数据通过网络分布到另外一个或者多个地理位置不同的系统中,以满足可伸缩组织的需要,减轻主服务器的工作负荷,提高数据的使用效率。数据复制的过程类似于报纸杂志的出版过程,即把信息从信息源迅速传送到信息接收处。
在SQL Server中,其数据复制具有下列特点:
n 复制是一个内置程序,不是一个附加的程序。
n 可以定期把出版服务器上的数据完全复制到订阅服务器上。
n 在复制过程中,可以只复制变化的数据,未改变的数据不必复制。
n 允许用户在接收数据的站点上自主地改变复制过的数据。
n 通过使用COM界面,提供了多种环境下完整的数据复制服务。
n 支持用于Internet的复制。
n 提供了用于复制的多个向导,可以方便地管理复制。
n 所有的复制任务都可以使用脚本,方便了对复制的编程和维护。
n 提供了复制监测工具,可以监测复制活动。
复制是一种比较抽象和复杂的过程。在复制过程中,所涉及的复制组件和复制服务都比较多。为了更好地理解复制,可以把复制过程比喻成比较容易理解的出版过程。
这里所说的出版,是指人们熟悉的报纸、杂志、书籍、电子出版物等的出版。之所以把复制过程比喻成出版过程,是因为这两种过程从内容到实现形式都非常类似。
从内容方面看,这两种过程都是传送信息,出版主要传送新闻、数据、图像、知识等信息,复制主要传送数据信息。
从实现形式来看,在这两种过程中,都有信息源和信息接收处。在出版过程中,信息源是指占有信息的出版社,信息接收处是指订阅了出版物的用户;而在复制过程中,信息源是将要复制的数据所在的SQL Server系统服务器,信息接收处是接收所复制的数据的SQL Server系统服务器或者其他服务器。
从信息的传送方向来看,这两种过程基本上是单向的。在出版过程中,信息的传送方向是从出版社到用户;在复制过程中,信息的传送方向一般是从存储主数据库的服务器到接收数据库的服务器。当然,在特殊情况下,也可以将复制过程设置成双向的。
复制的过程如图15-1所示。
图15-1 复制过程示意图
由于把复制过程比喻成出版过程,因此,复制过程中的组件就可以进行相应的比喻,例如出版服务器、订阅服务器、分发服务器、文章和出版物。
出版服务器包含了将要复制的数据所在的数据库,该服务器负责制作将要出版的数据,然后将这些数据的所有变化发送到分发服务器中。
订阅服务器是数据复制的目标地,负责接收复制过来的数据,并且负责接收从出版服务器传送过来的全部变化。
分布服务器也是一种非常重要的服务器,该服务器在出版服务器和订阅服务器之间起中介作用。分布服务器负责从出版服务器中接收复制过来的数据,然后在该服务器的分布数据库中存储这些变化,最后按照指定的时间间隔将这些数据及变化推到相应的订阅服务器中。虽然分发服务器和出版服务器可以在同一台计算机上,但是为了减轻出版服务器的工作负荷,一般把分发服务器放在一个单独的机器上。分发服务器不仅可以支持一个出版服务器,还可以支持多个出版服务器。
在复制过程中,把要复制的数据称为出版物和文章。在复制过程中,文章是复制的基本单元,是组成出版物的最小单位。文章是与数据库中的表相对应的。文章既可以包括一个表中的全部数据,也可以只包括表中的一部分数据。单个文章是不能复制的,文章必须组成出版物才能出版。出版物是一个将要复制的完整内容,它包括一篇或者多篇文章,是订阅服务器订阅的对象。一个订阅包括了出版物中的全部文章。
当一篇文章只包括表中的一部分数据时,就等于对表中的数据进行了过滤。过滤数据具有实际的意义。例如,在复制过程中,如果允许多个站点修改数据,为了避免复制冲突,就可以采用过滤数据的方法,使不同的站点复制一个表中不同部分的数据。
过滤数据有3种方法,即水平过滤、垂直过滤和水平垂直混合过滤。水平过滤就是包含表中的一部分列,是列的子集。当使用水平过滤时,只有指定列中的数据才会出现在订阅服务器中。垂直过滤就是包含表中的一部分行,是行的子集。当使用垂直过滤时,只有指定的这一部分行中的数据才可以传送到订阅服务器中。另外,还可以采用水平垂直混合过滤的方法,即选择表中的一部分列和一部分行,复制表中的一部分数据。
创建复制包括以下三个步骤:
(1)创建一个分发服务器。
(2)创建一个出版物并定义出版物上的文章。
(3)定义订阅服务器并订阅一种出版物。
在创建出版服务器之前,首先应该创建一个分发服务器供出版服务器使用,分发服务器可以是本地服务器或者远程服务器。
可以按下面的步骤创建分发服务器:
(1)运行SQL Server Enterprise Manager,连接到设置为分发服务器,单击Tools菜单,选择Wizards,弹出选择向导对话框,单击Replication左边的“+”号,展开其子菜单,如图15-2所示。
图15-2 选择向导
(2)在子菜单中双击Configure Publishing and Distribution,弹出如图15-3所示的对话框,单击“下一步”按钮,弹出如图15-4所示的对话框。在该对话框中,选择将本地服务器作为分发服务器。
(3)单击“下一步”按钮,弹出如图15-5所示的Configure SQL Server Agent对话框,在该对话框中选择是否在计算机启动的时候自动运行SQL Server Agent。默认选择是自动启动SQL Server Agent。
图15-3 Configure Publishing and Distribution Wizard
图15-4 Select Distributors
图15-5 Configure SQL Server Agent
(4)单击“下一步”按钮,弹出如图15-6所示的对话框Customize the Configuration对话框,在该对话框中可以选择使用默认的设置或根据需要定制选项。选择自定制选项,并单击下一步按钮,弹出如图15-7所示的对话框,在该对话框中,选择分发数据库的名称和文件的位置。
图15-6 Customize the Configuration
图15-7 Provide Distribution Database Information
(5)单击“下一步”按钮,弹出如图15-8所示的Enable Publishers对话框,在该对话框中设置出版服务器,单击出版服务器后面的按钮,弹出如图15-9所示的Publisher Properties对话框,在该对话框中,可以设置出版服务器的一些特殊选项,也可以选择使用登录到出版服务器的账号。
图15-8 Enable Publishers
图15-9 Publisher Properties
(6)设置完成后,单击“确定”按钮,返回Enable Publishers对话框,单击“下一步”按钮,弹出如图15-10所示的Enable Publication Databases对话框,在该对话框的选择列表中,选择数据库来进行事务或者并复制,在这里,因为只设置服务器为分发服务器,所以不选择任何数据库。
图15-10 Enable Publication Databases对话框
(7)单击“下一步”按钮,弹出如图15-11所示的Enable Subscribers对话框,在该对话框中可以选择哪些服务器可以连接到该服务器。如果要设置订阅服务器信息,单击按钮,弹出如图15-12所示的Subscribe Properties对话框,在该对话框中有两个选项卡:General和Schedules。在General选项卡中,指定用来连接订阅服务器的帐号。Schedules选项卡如图15-13所示,在该选项卡中可以选择分发和合并代理运行的时间。设置完成后单击“确定”按钮,返回Enable Subscribers对话框。
图15-11 Enable Subscribers
图15-12 Subscriber Properties
图15-13 Schedules选项卡
(8)单击“下一步”按钮,弹出如图15-14所示的对话框,在该对话框中列出了设置出版服务器和订阅服务器的信息,如果需要修改,单击“上一步”按钮,单击“Finish”按钮完成创建。
图15-14 完成出版服务器设置
在分布数据库建立后,接着要为订阅服务器创建和设置一份出版物。要创建一份新的出版物,按照以下步骤执行:
(1)运行SQL Server Enterprise Manager,连接到分发服务器,单击Tools菜单,选择Wizards,弹出选择向导对话框,单击Replication左边的“+”号,展开其子菜单,双击Create Publications Wizard,弹出如图15-15所示的Create and Manage Publications对话框。
图15-15 Create and Manage Publications对话框
(2)在图15-15所示的对话框中,列出了在设置复制时选择的数据库,选择其中之一并单击“Create Publication”按钮,弹出如图15-16所示的Create Publication Wizard对话框,在该对话框中列出了创建出版物所需要的步骤,单击“下一步”按钮弹出如图15-17所示的Choose Publication Databae对话框。
图15-16 Create Publication Wizard对话框
图15-17 Choose Publication Databae对话框
(3)选择数据库,单击“下一步”按钮,弹出如图15-18所示的Select Publication Type对话框。在该对话框中选择复制类型,默认是Snapshot Publication。
(4)单击“下一步”按钮,弹出如图15-19所示的Specify Subscriber Types对话框。在该对话框中选择订阅服务器的类型。
(5)单击“下一步”按钮,弹出如图15-20所示的Specify Articles对话框。在该对话框中列出了一些对象,必须在出版物中创建至少一个文章。选择文章后,在文章的右面出现一个按钮,单击该按钮可以弹出一个属性对话框,在该对话框内可以设置所选文章的一些属性信息。
图15-18 Select Publication Type对话框
图15-19 Specify Subscriber Types对话框
图15-20 Specify Articles对话框
(6)单击“下一步”,弹出如图15-21所示的Article Issues对话框。
图15-21 Article Issues对话框
(7)单击“下一步”按钮,弹出如图15-22所示的Select Publication Name and Description对话框。在Publication Name文本框中键入出版物的名称,在Publiation Description文本框中键入描述信息。
图15-22 Select Publication Name and Description对话框
(8)单击“下一步”按钮,弹出如图15-23所示的Customer the Properties of the Publication对话框。在该对话框中,可以选择是否定义数据过滤器、允许匿名订阅或者定制其它属性。
图15-23 Customer the Properties of the Publication对话框
(9)单击“下一步”按钮,弹出如图15-24所示的Filter Data对话框。在该对话框中,选择过滤数据的方式:Vertieally和Horizonally,在这里选择Vertically。
图15-24 Filter Data对话框
(10)单击“下一步”按钮,弹出如图15-25所示的Filter Data Columns对话框。在该对话框中可以为每个文章过滤独立的行。
图15-25 Filter Data Columns对话框
(11)单击“下一步”按钮,弹出如图15-26所示的Allow Anonymous Subscriptions对话框。在该对话框中,可以设置是否允许匿名订阅,如果选择允许匿名订阅,SQL Server允许任何服务器连接并读取数据。
图15-26 Allow Anonymous Subscriptions对话框
(12)单击“下一步”按钮,弹出如图15-27所示的Set Snapshot Agent Schedule对话框。在该对话框中可以设置快照发生的频率和时间,单击Change按钮弹出如图15-28所示的Edit Recurring Job Scheanle对话框,在该对话框中设置频率和时间,单击OK按钮,返回Set Snapshot Agent Schedule对话框。
图15-27 Set Snapshot Agent Schedule对话框
图15-28 Edit Recurring Job Schedule对话框
(13)单击“下一步”按钮弹出如图15-29所示的完成创建出版物对话框,在该对话框中列出了创建的步骤和一些选项,如果需要修改,单击“上一步”按钮,单击Finish按钮,SQL Server将创建该出版物。
图15-29 完成创建出版物对话框
订阅有两种类型:推式订阅和拉式订阅。推式订阅是在同一台机器上执行订阅和管理的,拉式订阅则允许在远程站点订阅出版物。创建推式订阅的步骤如下:
(1)运行SQL Server Enterprise Manager,连接到出版服务器,在Tools菜单中,选择Wizard菜单命令,弹出选择向导对话框,单击Replication左边的“+”号,在展开的子菜单中双击Create Push Subscirption Wizard,弹出如图15-30所示的Create and Manage Publications对话框。
图15-30 Create and Manage Publications对话框
(2)在该对话框中选择要推到另一站点的出版物,然后单击push New Subscriptions按钮,弹出如图15-31所示的Push Subscription Wizard对话框。
图15-31 Push Subscription Wizard对话框
(3)单击“下一步”按钮,弹出如图15-32所示的Choose Subscribers对话框。选择相应的出版服务器。
图15-32 Choose Subscribers对话框
(4)单击“下一步”按钮,弹出如图15-33所示的Choose Destination Database对话框。单击Browse or Create按钮弹出一个对话框,在该对话框中列出了目标服务器中的所有数据库,选择出版的目标数据库,单击OK按钮返回Choose Destination Database对话框。
(5)单击“下一步”按钮弹出如图15-34所示的Set Distribution Agent Schedule对话框。在该对话框中设置分发代理的运行时间,单击Changes按钮弹出一个对话框,在该对话框中可以设置时间间隔。
图15-33 Choose Destination Database对话框
图15-34 Set Distribution Agent Schedule对话框
(6)单击“下一步”按钮,弹出如图15-35所示的Initialize Subscription对话框。在该对话框中设置是否进行数据库结构的初始化,初始化任务由快照代理完成。
(7)单击“下一步”按钮,弹出如图15-36所示的Start Required Services对话框。检查MSSQLServer服务和SQL Server Agent服务是否已经启动,如果没有启动,需要启动相应的服务。
(8)单击“下一步”按钮,出现完成创建对话框,在该对话框中列出了创建订阅的过程中所选择的设置,如果需要修改,单击“上一步”按钮,单击“完成”按钮完成创建订阅。
图15-35 Initialize Subscription对话框
图15-36 Start Required Services对话框
创建拉式订阅的步骤如下:
(1)运行SQL Server Enterprise Manager,连接到出版服务器,在Tools菜单中,选择Wizard菜单命令,弹出选择向导对话框,单击Replication左边的“+”号,在展开的子菜单中双击Create Pull Subscription Wizard,弹出如图15-37所示的Pull Subscription Wizard对话框。
(2)单击“下一步”按钮,弹出如图15-38所示的Look For Publication对话框,在该对话框中选择出版物服务器。
(3)单击“下一步”按钮,弹出如图15-39所示的Choose Publication对话框,在该对话框中选择出版物,可以在SQL Server Enterprise中注册的服务器中选择一个,单击Register Server可以注册一个服务器。
图15-37 Pull Subscription Wizard对话框
图15-38 Look For Publication对话框
图15-39 Choose Publication对话框
(4)单击“下一步”按钮弹出如图15-40所示的Specify Synchronization Agent Login对话框。在该对话框中选择同步代理器所用的登录方式,并单击“下一步”按钮,弹出如图15-41所示的Initialize Subscription对话框,在该对话框中选择是否初始化数据库结构。
图15-40 Specify Synchronization Agent Login对话框
图15-41 Initialize Subscription对话框
(5)单击“下一步”按钮,弹出如图15-42所示的Snapshot Delivery对话框。在该对话框中选择访问快照文件的方式。
(6)设置完成后单击“下一步”按钮,弹出如图15-43所示的Set Distribution Agent Schedule对话框。在该对话框中设置分布代理的运行时间,单击Changes按钮弹出一个对话框,在该对话框中可以设置时间间隔。
图15-42 Snapshot Delivery对话框
图15-43 Set Distribution Agent Schedule对话框
(7)单击“下一步”按钮弹出如图15-44所示的Start Required Services对话框。检查MSSQLServer服务和SQL Server Agent服务是否已经启动,如果没有启动,需要启动相应的服务。
(8)单击“下一步”按钮,出现完成创建对话框,如图15-45所示。在该对话框中列出了在创建订阅的过程中所选择的设置,如果需要修改,单击“上一步”按钮,单击“Finish”按钮完成订阅的创建。
图15-44 Start Required Services对话框
图15-45 完成创建对话框
可以使用Transact-SQL语句或者SQL Server Enterprise Manager来监视复制。双击Replication Monitor,在右面窗格中列出了以下三个文件夹:
n Publishers:该文件夹包含了出版服务器的信息。选择任意一个出版服务器,便可以浏览已经订阅该出版物的计算机的信息。
n Agents:Agents文件夹包含了计算机上的不同代理的信息,选择一个代理,便可以浏览该代理的当前状况。如果双击一个代理,将显示该代理的历史信息。
n Replication Alerts:该文件夹可以用来设置警报以响应在复制过程中发生的事件。
在不需要复制的时候,可以卸载该复制。方法如下:在SQL Server Enterprise Manager中,单击Tools菜单,选择Wizards,弹出选择向导对话框,单击Replication左边的“+”,展开其下一级菜单,双击Disable Publishing and Distribution Wizard,启动相应向导,如图15-46所示。然后,根据提示即可一步一步地完成删除出版和分发的操作。
图15-46 Disable Publishing and Distribution Wizard
在数据库技术中,数据复制是一个热门技术,是企业用于分发信息的强大而灵活的工具。通过本章的学习,应掌握下列内容:
n 复制是一种实现数据分布的方法,即把一个系统中的数据通过网络分发到另外一个或者多个地理位置不同的系统中,以满足可伸缩组织的需要,减轻主服务器的工作负荷,提高数据的使用效率。
n 出版服务器包含了将要复制的数据所在的数据库,该服务器负责制作将要出版的数据,然后将这些数据的所有变化发送到分布服务器中。
n 订阅服务器是数据复制的目标地,负责接收复制过来的数据,并且负责接收从出版服务器传送过来的全部变化。
n 分布服务器是非常重要的服务器,该服务器在出版服务器和订阅服务器之间起中介作用。分布服务器负责从出版服务器中接收复制过来的数据,然后在该服务器的分布数据库中存储这些变化,最后按照指定的时间间隔将这些数据和变化推到相应的订阅服务器中。
n 创建复制包括以下步骤:创建一个分发服务器;创建一个出版物并定义出版物上的文章;定义订阅服务器并订阅一种出版物。
n 可以使用Transact-SQL语句或者SQL Server Enterprise Manager来监视复制。
n 在不需要复制的时候,可以卸载该复制。读者应学会用向导卸载复制。