26. Microsoft SQL Server 复写:概观与快照式复写
什么是数据库复写?
复写概念
设定发行与散发
快照式复写
管理复写
快照式复写校调
本章总结
Microsoft SQL Server 数据库复写技术可用于散发数据和预存程序在不同的服务器,复写允许设定系统自动地将数据复制到另一个系统。使用数据库复写,您可依您的需求决定应复制数据的多寡,并且可决定要把数据分配到多少个系统里。由于复写程序是自动的,并且复写期间数据库会将复写的状态数据及复写数据都储存下来,因此不用担心数据遗失的问题。如果复写程序被中断(如断电),在系统恢复正常运作后,复写会从中断处继续进行。
由于复写的程序相当复杂,本书以三章来讨论这个主题。本章会先学到复写与快照式复写的基本方法与概念, 第27章 会介绍交易式复写, 第28章 则介绍合并式复写,这三章提供的信息将可让您彻底了解 SQL Server 复写,包括如何规划、管理与使用。
什么是数据库复写?

数据库复写(Database Replication) 是一种从一个数据表或数据库将数据复制或复写到另一个数据表或数据库的动作。使用复写,您可以完整或指定部份的数据库复本,分散到公司内部的其它系统。当使用 SQL Server 复写,分配和复制数据的任务即自动进行,在复写数据的过程中也不需要使用者的介入。由于数据复写与程序是由 SQL Server 内部来完成,因此具备了稳定性与可复原性。如果复写期间(或是任何 SQL Server 交易进行期间)产生错误,作业会在问题修复后从中断处继续执行。因此,许多人利用复写取代其它在系统间搬移数据的方法。
有许多选项可用来规划网络上的复写。例如,您可指定要复写的数据多寡。您可指定复写的复本是只读还是可修改。也可指定数据每隔多久就需要复写。在 〈规划快照式复写〉 一节里将介绍这些与其它的选项。
复写概念

本节将学习基本的数据库复写概念。首先了解发行和订阅模型,以及复写的三种类型:复写数据、数据传播以及复写代理程序。
复写组件

Microsoft SQL Server 2000 中的复写是利用「发行和订阅(publish-and-subscribe)」模式,这个模式首先在 SQL Server 6.0 中被用来建置数据的复写,主要包括三个观念,即 发行者(publishers) 、 散发者(distributors) 和 订阅者(subscribers) 。「发行者」是使资料可供复写的数据库系统;「散发者」是包含分散数据库或虚拟数据(pseudodata)来维护和管理复写的数据库系统;「订阅者」是接受复写数据和储存复写数据库的数据库系统。
发行者

发行者是由一个安装有 SQL Server 数据库的 Microsoft Windows 系统组成。此数据库是被复写数据的来源。此外也会侦测已经变更的数据,使数据确实的被复写。发行者也需维护该站台中关于发行集的所有信息,例如哪些数据被规划复写等等。依复写类型的不同,发行者在复写过程依需要负担不同的工作量,本章稍后将有进一步解释。
一个复写环境可以包含很多订阅者,但任何要给予发行的 发行项(article) ,亦即规划要复写的资料集,只能有一个发行者。(发行项将在本章稍后 〈复写资料〉 一节里详细说明。)一个特定的资料集只能有一个发行者,并非意味着发行者是唯一一个可修改数据的组件,订阅者也可修改数据甚而再发行数据,不过这需要一点技巧,您可参阅本章及后两章。
散发者

散发者是包含散发数据库和储存中继数据、历程记录数据及其它信息的服务器;散发者也需负责将复写资料散发给订阅者。发行者和散发者并不需要放在同一台服务器上,事实上,您可能会比较喜欢用一台专用的服务器来担任散发者。当建立发行者时,每个发行者必须指派一个散发者,且一个发行者只能有一个散发者。这种安排方式将在本章稍后 〈规划发行与散发〉 一节里有详细的说明。
________________________________________
说明
中继资料(metadata) 是关于数据的概要数据,用来在复写中追踪复写作业的状态。该数据同样会由发行者传播给复写集合中的其它成员,内容包括数据结构与数据属性的相关信息,如某一数据行中数据的型别(数值型态、文字型态等)或数据行的长度等。
________________________________________
订阅者

刚才已经提到,订阅者是储存复写数据和接收更新的数据库服务器。订阅者也可进行更新并和发行者一样对其他系统提供服务。同时,一个订阅者也可以作为其它系统的发行者。要让订阅者接收复写数据,它必须订阅该数据。「订阅复写」(subscribing to replication)指的是订阅者接收该数据的规划方式。而一个「订阅」(subscription)意指您所订阅的数据库信息。我们在本章的 〈规划快照式复写〉 一节中将讨论这些组件之间的相互关连性。
复写类型

SQL Server 提供了三种类型的复写:快照式(snapshot)、交易式(transactional)和合并式(merge)。这些复写的类型提供了复写数据库中不同程度的数据一致性,同时也会有不同层级的系统负荷。
快照式复写

快照式复写是最简单易懂的复写类型。在快照式复写中,数据库的快照集(snapshot)将周期性地产生并传播给订阅者。快照式复写的最主要的优点在于,它不涉及到发行者和订阅者之间持续的系统负荷;也就是说,它不需要连续的监控发行者上的数据变更,也不需持续传送数据至订阅者。最大的缺点在于,目前存在于订阅者上的数据库不一定是最新的快照集。
在很多情况下,快照式复写已经足够并且合适。举例来说,当来源数据的修改只是偶尔为之的时候,像电话清单、价格表和项目描述等信息,可以很容易的使用快照式复写来处理,这些清单可以在每天的业余时间进行更新。
交易式复写

交易式复写可用来将变更复写至数据库。使用交易式复写,任何发行项(规划要复写的数据集)的变更将立即从交易记录文件中被撷取出来并传播至散发者。依照您复写的规划,利用交易式复写可让您的发行者与其订阅者保持近乎一致的状态。
当需要保持所有复写系统为最新状态时,应使用交易式复写。由于每个造成系统中数据变更的交易均会个别套用至复写系统,交易式复写比快照式复写占用更多的系统资源。不过,交易式复写比快照式或合并式复写更能保持系统在最新的状态。交易式复写将在 第27章 详细说明。
合并式复写

合并式复写与交易式复写类似的地方在于它会持续追踪发行项的变更。不过,合并式复写并不会个别的传播造成变更的交易,而是周期性的传送一整批变更。由于合并式复写以批次方式传送数据,它也类似于快照式复写。(虽然在快照式复写中,所有规划要复写的数据都会传播,而不只是变更。)合并式复写将在 第28章 详细说明。
复写资料

您必须将要复写的数据储存在一个称为发行集的对象中。一个 发行集(publication) 是由一个(含)以上的发行项组成。让我们更详细的看一下发行项与发行集。
发行项

之前已提到,一个发行项是要复写的数据的个别集合。一个发行项可以是一整个数据表,或是由特定的数据行与数据列构成的数据表子集,或是一个预存程序。您可以使用筛选器来建立子集。「水平筛选器(horizontal filter)」可用来建立由数据列构成的子集;「垂直筛选器(vertical filter)」则可用来建立由数据行构成的子集。水平与垂直筛选器将在本章稍后详细说明。
________________________________________
说明
在合并式复写中,筛选器的定义与运作跟快照式与交易式复写并不相同。本章与接下来的两章将会详细说明。
________________________________________
发行集

发行集是发行项的集合,这些发行项被组合在一起视为一基本单元。发行集将逻辑分组后的发行项视为一组复写对象。举例来说,您可以建立一个发行集来复写一个由许多数据表构成的数据库,每个数据表定义成一个发行项。在复写数据库时,以一个发行集来复写整个数据库会比数据表个别地复写要来得更有效率。
发行集可由单一的发行项来构成,但它多半都包含有一个以上的发行项。不过,订阅者只能订阅发行集,而不能订阅发行项。因此,如果您希望订阅一个单一的发行项,您必须设定一个只有此发行项的发行集,然后订阅这个发行集。
发送与提取订阅

复写资料可以利用数种方法来传送。所有的传送方法的基础不是「发送订阅」(push subscriptions)便是「提取订阅」(pull subscriptions)。订阅者可以支持同时混合了发送订阅和提取订阅的订阅方式。
发送订阅

当使用发送订阅时,散发者负责为订阅者提供更新。更新的初始化并不需要任何来自订阅者的请求。发送订阅在需要集中管理时很有用,这是因为这些复写都由散发者控制和管理,而不是不同的订阅者。换言之,复写的初始化与排程由散发者掌控。
发送订阅允许您在复写排程上有更大的弹性。发送订阅可以被设定为保持复写情形接近实时同步,或根据规定的排程来执行更新。在本章的 〈规划复写〉 一节中,您将学到更多有关这些选项的内容。
提取订阅

提取订阅(pull subscription)允许订阅者初始复写,复写可依排程或以手动进行。提取订阅适用于当发行集拥有大量的订阅者或是订阅者联机时间不定。透过提取订阅,订阅者可定期联机网络及提取复写数据。提取订阅的另一个好处是可降低送至散发者的联机错误讯息。如果散发者欲初始复写至没有响应的订阅者,将产生错误讯息。因此,如果复写是由订阅者在联机时初始化,就不会产生错误讯息。
复写代理程序

数个代理程序可执行将复写数据由发行者传至散发者,到最后至订阅者手中。这些代理程序包括:快照集代理程序、记录读取器代理程序、散发代理程序、合并代理程序及队列读取器代理程序。本节将学习如何管理这些代理程序。
快照集代理程序

「快照集代理程序」用于建立及传播快照集至散发者(或快照点)。快照集代理程序建立复写数据(即快照集)和建立信息,此信息可让散发者代理程序用来传播数据(此信息即中继数据)。快照集代理程序将数据快照储存至散发者,或指定其它或者额外位置来储存。快照集代理程序也负责维护复写对象的同步状态信息;这项信息储存在发行者数据库中。
快照集代理程序依排程的不同,可定时启动执行作业。快照集代理程序会执行下列步骤:
1. 建立散发者与发行者之间的联机。假设两者未联机,则快照集代理程序不会建立快照集。当联机建立,快照集代理程序则锁定所有发行项,以确保数据快照集的一致性。(由于锁定后可以防止其它使用者更新数据表,因此快照集代理程序必须安排在数据库活动的离峰时间执行。)
2. 建立发行者与散发者之间的联机,并为每个发行项写入一份数据表结构描述至散发者数据库,这份数据即为中继数据。
3. 复制发行者上已经发行数据表中的数据,将其写至快照集资料夹中。快照集数据夹不一定要放在散发者。如果所有订阅者均属于 SQL Server 系统,则快照集会储存为 原生大量复制工具程序(native bulk copy program) (大量复制在 第24章 有讨论)档案。若有一或多个订阅者属于异质性数据来源,则快照集会储存成文字文件。至此由快照集代理程序设定同步信息。
4. 当数据被复制后,快照集代理程序即更新于散发者数据库信息。
5. 释放每一个已经发行数据表的共享锁定,并完成记录历程数据表的写入动作。
所以,快照集代理程序仅负责建立快照集,而散发数据至订阅者则由其它代理程序执行。
当使用快照集复写且在发行者的数据有异动,快照集应经常更新。由于快照集固定被复制至订阅者,故应保持最新状态。
________________________________________
说明
当使用的是交易式复写或合并式复写,或是增加新订阅,就无须更新快照集。
________________________________________
记录读取代理程序

记录读取代理程序用于交易式复写。它可将标示为复写的交易,自发行者的交易记录移至散发数据库中。标示为交易式复写的每个数据库都具有一个在散发者的记录读取器代理程序。记录读取器代理程序会在本书 第27章 详细讨论。
散发代理程序

散发代理程序(Distribution Agent)散发快照集与来自散发者数据库中的交易至订阅者。每一个发行者均有自己的散发代理程序。如果使用发送订阅,则透过散发者的散发代理程序执行。如果使用提取订阅,则透过订阅者的散发代理程序执行。
合并代理程序

合并代理程序(Merger Agent)可搭配合并式复写,用在合并递增数据。当使用合并式复写,就不使用到散发代理程序或快照集代理程序,而是使用合并代理程序连结发行者和订阅者。在 第28章 我们会详细讨论合并代理程序。
队列读取器代理程序

队列读取器代理程序(Queue Reader Agent)用来传送更新数据至具队列更新选项的快照式复写或交易式复写订阅者。这个选项允许在不使用分布式交易的情况下,在订阅者处作变更。
监视复写代理程序活动

您可使用 Enterprise Manager 监视复写代理,步骤如下:
1. 在 Enterprise Manger 中展开服务器群组,然后展开指定为散发者数据库的服务器。
2. 在 复写监视器 按一下鼠标右键,然后按一下 效能监视器 。
3. 展开 复写监视器 数据夹,然后展开 代理程序 数据夹。
4. 展开欲监视的代理程序数据夹。
5. 按一下要监视的代理程序,在右方详细数据窗格的数据列按一下鼠标右钮叫出快捷菜单,然后按一下 代理程序历程 即可监视复写代理程序历程。
设定发行与散发

要设定发行与散发,可透过 设定散发暨发行精灵(Configure Publishing and Distribution Wizard) ,也可透过预存程序设定发行与散发,但透过 设定散发暨发行精灵 是较建议的做法。透过 Enterprise Manager,可利用以下的精灵作复写设定:
建立发行集精灵

建立提取订阅精灵

建立发送订阅精灵

停用发行和散发精灵

本节将介绍的设定发行与散发程序适用所有复写类型。在设定发行与散发者后,再设定复写类型(本章稍后及以下两章会介绍如何设定各类型复写)。以下为设定发行与散发程序:
1. 在 SQL Server Enterprise Manager,按一下设定为散发者的服务器。从 工具列 选择 精灵 。在 选择精灵 对话框显示后,展开 复写 资料夹,选择 设定散发暨发行精灵 ,如图 26-1。按 确定 。


图26-1 「选择精灵」对话框
2. 出现 设定散发暨发行精灵 欢迎画面,如图 26-2。


图26-2 「设定散发暨发行精灵」欢迎画面
3. 按 下一步 以显示 选取散发者 画面,如图 26-3。


图26-3 「选取散发者」画面
4. 在这个画面里您可以选择将我们在步骤一选取的服务器设为散发者及发行者,或是仅设定发行者并使用一个先前已完成设定的散发者。如果您选择设定最近的系统作为散发者,按一下第一个选项。精灵将会为您建立散发数据库与记录文件。如果您想要使用另外一个系统作为散发者,按一下第二个选项。如果没有其它的 SQL Server 系统被设定成散发者,则可用的选项将只有第一个。以一个专用的系统来作为散发者会是比较适合的选择。
________________________________________
说明
一个发行者只能定义一个散发者,所有的发行集应使用同一个散发者。
________________________________________
5. 如果您选择使用另一个系统作为散发者,您必须注册该 SQL Server 系统并且它必须已被设定为散发者。按一下「新增服务器」按钮,并在「注册 SQL Server 属性」窗口中选择一种验证方式来建立散发者上 SQL Sever 的联机。
6. 在范例中,选择设定中的系统为散发者。
7. 现在,精灵会确认发行者已经可以存取散发者。若是登入程序失败, SQL Server 代理程序属性 窗口会出现,允许修改代理程序注册账号,如图 26-4 所示。


图26-4 「SQL Server 代理程序属性」窗口
________________________________________
说明
如果在设定 SQL Server时使用本机系统账号,会看到这种讯息:本机系统账号仅具本机系统权限;故名。如果在设定 SQL Server 时使用网域账号,就不会出现步骤七的 SQL Server 代理程序属性窗口。
________________________________________
8. 在这个窗口中,可以修改 SQL Server 代理程序的其它功能(相关信息可参照 第31章 )。完成设定后按依下 确定 。
9. 设定 SQL Server 代理程序 画面出现,如图 26-5 所示。这个画面提示将 SQL Server 代理程序设为自动启动。复写将依 SQL Server 代理程序命令执行。所以若代理程序不执行,复写也将无发执行。建议选择让 SQL Server 代理程序自动启动,按一下 下一步 。


图26-5 「设定 SQL Sever 代理程序」画面
10. 指定快照集数据夹 画面出现,如图 26-6 所示。指定快照集位置,可以使用预设位置或指定新位置。按 下一步 继续。


图26-6 「指定快照集数据夹」画面
11. 自订组态 画面出现,如图 26-7 所示。


图26-7 「自订组态」画面
12. 在这个画面,可选择皆预设(第 2 个选项)或自订散发者数据库。如选择接受预设,安装过程即完成并出现完成画面。在这里,我们先选择第 1 个选项继续设定。
________________________________________
说明
预设的位置可能会选择到空间不够大的磁盘,因此我们继续设定步骤,学习如何自订散发者数据库。
________________________________________
13. 选择 下一步 进入 提供散发者数据库信息 画面,如图 26-8 所示。指定散发数据库名称及档案与记录文件位置。


图26-8 「提供散发者数据库讯息」画面
14. 按 下一步 进入 启用发行者 画面,如图 26-9 所示。选择一个与步骤一不同的发行者,或新增一个发行者数据库(按 新增 即可新增一个联机至 SQL Server 的发行者)。


图26-9 「启用发行者」画面
15. 按 下一步 进入 启用发行集数据库 画面,如图 26-10。可针对单一数据库选择启用交易式或合并式复写,预设状态下不会选取任何复写类型,因此如略过这个步骤,会建立一个发行者和散发者,但不会定义发行集。发行集可透过 建立发行集精灵 设定(较为建议的做法)。


图26-10 「启用发行集数据库」画面
16. 按 下一步 进入 启用订阅者 画面,如图 26-11 所示。选择订阅这个发行集的订阅者。我们建议不要使用这个步骤来选择,最好是透过 设定发行暨发行集精灵 来做这项设定。
17. 按 下一步 进入 完成散发暨散发精灵的设定 画面,如图 26-12 所示。这个画面会显示设定摘要。按 完成 完成设定,会花一点时间建立设定。当设定完成,会列出设定进行的程序,及是否需要设定 SQL Server 代理程序为自动启动。要在 SQL Server 代理程序执行的情况下,复写代理程序才会执行。当设定程序完成,就可看到在 Enterprise Manager 内多了 复写监视器 。


图26-11 「启用订阅者」画面
________________________________________
说明
如果想要变更复写数据库的设定,在 Enterprise Manager 内点选该数据库,在 工具 选择 复写 ,从列出的项目中选取预更改的选项。
________________________________________



图26-12 「完成散发暨散发精灵的设定」画面
快照式复写

本节提供快照式复写的详细信息。首先学习何时使用快照式复写。接着介绍规划快照式复写。
使用快照式复写

快照式复写在数据大多属于静态数据且不常变更的情况下适用。如同之前所学,快照式复写即将数据产生快照集并传送至订阅者。数据将会在下一次快照集使用时更新。如果使用快照式复写,由于在下次使用快照集时就会更新,因此不需修改在订阅者上的数据。
适合使用快照式复写的时机如下:
某个销售单位散发产品价格表至所有旗舰店,所有价格每晚更新一次。

检视数据表,该数据表不需经常更新,属于静态数据。

当数据需要经常性的更新(经常需要复写),交易式或合并式复写则较为适用。
设定快照式复写

如之前所提到,设定任何复写型态前,需设定发行者与发行集(如本章之前所示)。要设定快照式复写,要先设定发行集,然后设定订阅者。
设定发行集

设定发行集可指定欲复写的数据,复写的方式,及何时产生复写。设定步骤如下:
1. 使用 Enterprise Manager,透过下列任一步骤执行设定,选择 工具 / 复写 ,点选 建立和管理发行集 ,或是选择 工具 / 精灵 ,选择 建立发行集精灵 。用任一方式都可进入建立和管理发行集的对话框,如图 26-13 所示。这里可选择预发行的数据库或数据表。


图26-13 「建立和管理发行集」对话框
若发行集已存在,下列的按键就会显示:
o 发送新的订阅 :可为已建立发行集建立新的发送订阅,这个步骤将会在本章 〈设定订阅集〉 一节讨论。

o 属性与订阅 :可更改发行集与订阅集属性。

o 指令化发行集 :可建立指令用以建立更多发行集。

o 删除发行集 :可删除已设定的发行集。

2. 选择发行集数据库(如图 26-13,选择 Northwind 为发行集数据库),选择 建立发行集 进入 建立发行集精灵 的欢迎画面,如图 26-14 所示。


图26-14 「建立发行集精灵」的欢迎画面
3. 注意在这个窗口,下方有 显示这个精灵中的进阶选项 选项。我们先不勾选这个选项,因为如果勾选这个选项,就会显示立即建立更新及队列更新订阅者选项。进阶选项允许订阅者更新发行集与发行者。此外,还会出现允许订阅集数据转换的选项。
点选 下一步 进入 选择发行集的数据库 窗口,如图 26-15 所示。可再次选择欲发行的数据。在步骤二选取的数据库会被点选。



图26-15 「选择发行集的数据库」画面
4. 选择 下一步 进入 选取发行集类型 窗口,如图 26-16 所示。


图26-16 「选取发行集」窗口
可选择任一复写类型,三种发行集的功能如下:
o 快照式发行集 :可定期复制发行项的快照集至订阅者。可在任一数据表上建立快照式发行集。

o 交易式发行集 :可建立交易式复写,在发行集数据发生修改时,将交易撷取并传至 订阅者 。只有当数据表设有主索引键时,发行项才可被建立。

o 合并式发行集 :可允许发行者与订阅者双向复写。任一数据表都可建立发行项。

5. 选择 快照式发行集 ,按 下一步 进入 指定订阅者类型 窗口,如图 26-17 所示。这个窗口可以指定是否所有的订阅者执行 SQL Server。图 26-17 显示预设情况下的选择,预设的设定指定所有的订阅者都执行 SQL Server 2000。如果接受此设定,就是将复写设定为使用原始 SQL Server 2000 的数据类型。其它还可以选择 SQL Server 7.0 的服务器,或其它性质的服务器,这个选项会使复写数据转换回字符格式,当然也会经过一些繁杂的转换手续。


图26-17 「指定订阅者类型」画面
6. 按 下一步 进入 指定发行项 画面,如图 26-18 所示。在这个画面,可以指定将数据表或其它数据库对象当作发行项来复写。这些发行项构成您所建立的发行集。在左手边所列出的画面,可以在 显示 中复选所列出的项目,包括 数据表 、 预存程序 及 检视表 ,一但勾选任何一个项目,在右手边的窗口就会列出这些项目的数据表明细。然后您可以在右手边的明细中再勾选想要发行的数据表,或是回到左手边的窗口,勾选 全部发行 选取项目中的所有数据表。记住,每一个数据表、预存程序或检视表都是一个独立的发行项,而发行集是由一组发行项构成。
注意在此画面中的发行项默认值按钮。这个按钮允许在系统中不同的发行项设定默认值,当按下这个按钮,会出现发行项的类型供您选择。选择数据表发行项后按确定,会进入预设数据表发行项属性窗口,如图 26-19 所示。一般卷标页中可指定下列的选项:
o 发行项名称

o 发行项描述

o 发行项的来源资料表名称

o 发行项的来源资料表拥有者



图26-18 「指定发行项」画面



图26-19 「预设数据表发行项属性」窗口的「一般」卷标页
在 快照集 标签页中,如图 26-20 所示,可设定以下选项:
o 卸除任何现有数据,并指定如何操作索引。

o 指定是否是否复制丛集索引或非丛集索引。

o 指定是否将使用者自定数据型别转换为基底数据型别。

o 指定是否复制条件约束。

指定设定后按 确定 。



图26-20 「预设数据表发行项属性」窗口的「快照集」标签页
7. 确定 指定发行项 的选项后按 下一步 ,进入 发行项的问题 窗口,一个发行集的分析窗口就建立了。如果要发行的是 Northwind 数据库,如图 26-21 所示,会提醒您当 IDENTITY 数据行被传到订阅者时,并不会传送 IDENTITY 属性。
8. 在分析了发行集之后,按 下一步 进入 选取发行集名称与描述 窗口,如图 26-22 所示。在这个画面中,可以简单的指定发行集名称和描述,也可以在 Active Directory 服务中选择列出这个发行集。


图26-21 欲复制 IDENTITY 数据行时出现的窗口



图26-22 选取发行集名称与描述
9. 按 下一步 进入 自定发行集的属性 窗口,如图 26-23 所示。在这个画面中,可以指定是否定义资料条件筛选(选择 是 即可),或是使用预设的设定选项(选择 否 )。若是选择 否 后按 下一步 ,就后完成建立发行集精灵,如图 26-31(在本节快要结束的地方)。本例中,我们先选择 是 来看看剩下的画面还提供哪些选项的设定。


图26-23 「自定发行集的属性」画面
10. 选择 下一步 进入 筛选数据 画面,如图 26-24 所示。在这个画面中,可以指定要垂直筛选还是水平筛选数据行(也可以两个都选择)。本例中,我们两项都勾选。
________________________________________
说明
不论使用的是快照式或交易式复写,条件筛选所提供的功能皆相同。但是,条件筛选的执行方式就和所使用的复写类型有关。在下一章中,我们会学习条件筛选对交易式复写的影响。在快照式复写中,是用建立快照集的 WHERE 子句来进行筛选的动作。本节步骤十三会解释如何指定 WHERE 子句。
________________________________________
11. 按 下一步 进入 筛选数据表的数据行 画面,如 26-25 所示。这个画面可以排除不要复写的数据行。首先从 发行集中的数据表 内点选 数据表 ,然后在 选取数据表中的数据行 内将不要复写的资料行的复选框取消。这样就允许将发行项垂直筛选,也就是相较于发行者的数据表,复写的资料表上会有较少的资料行。


图26-24 「筛选资料」画面
________________________________________
说明
主索引键数据行不能被排除,下一章会解释不能被排除的原因。
________________________________________



图26-25 「筛选数据表的数据行」画面
12. 按 下一步 进入 筛选数据表的数据列 画面,如图 26-26 所示。这个画面可选择排除不想要的数据列。选取一个数据表后按下 [...] 按钮,建立筛选。


图26-26 「筛选数据表的数据列」画面
13. 指定筛选 对话框出现,如图 26-27 所示。这个对话框允许在 SQL 陈述式中加入 WHERE 子句,排除必要的数据列。当完成所要排除的数据列时,按 确定 回到设定精灵。


图26-27 「指定筛选」对话框
14. 按 下一步 进入 允许匿名订阅 画面,如图 26-28 所示。这个画面允许指定是否允许匿名订阅或具名订阅。可依您实际需要选择。


图26-28 「允许匿名订阅」画面
15. 按 下一步 进入 设定快照集代理程序的排程 ,如图 26-29 所示。在这个画面您可接受预设的排程设定,或是按 变更 按钮进入编辑排程的对话框。


图26-29 「设定快照集代理程序的排程」画面
16. 按 变更 进入 编辑重复执行作业排程 对话框,如图 26-30 所示。这个对话框可指定快照集发行的排程,选择适合您需求的设定。图 26-30 显示该快照集的开始时间和结束时间为同一天。如果在设定的是快照式复写(如现在正在操作中的程序),且要快照集定时更新,就要将快照集排程设为循环的排程。当设定的是交易式复写,就要在建立新的订阅者后再执行快照集(除非之前设定的是匿名订阅者)。合并式复写会将最新的快照集送至订阅者,因此,在设定合并式复写时,可以在将要建立或建立新的订阅者后马上执行快照集。设定完成后按 确定 。


图26-30 「编辑重复执行作业排程」对话框
17. 按 下一步 进入 完成建立发行精灵 画面,如图 26-31 所示。这里可以看到所设定发行集的总结。
18. 检示总结信息后,按 完成 ,就可看到精灵建立发行集的过程,完成后会看到如图 26-32 的画面,告知发行集已成功的建立。


图26-31 「完成建立发行精灵」画面



图26-32 告知发行集成功建立画面
现在发行集已成功建立,并可发行至订阅者处。您可以在 建立与管理发行集 的对话框(本节稍早有提及),让订阅者开始运作,或是修改这个发行集的属性。
修改快照集排程

当网络状况变更,可能会需要修改快照集的排程(启用快照集排程设定的步骤在本节稍早做过介绍),当设定快照式复写排程,必须考虑下列几项因素:
资料的变动性 :如果数据经常更新,快照集就必须经常更新,反之亦同。

更新的必要性 :订阅的系统是否取决于数据的更新?如果答案是肯定的,快照集就必须经常更新。

系统的执行速度 :如果网络、发行者、散发者和订阅者的系统速度都很快,就算快照集的更新频率较高,也不会影响系统中其它组件的执行效能。

依照以下的步骤设定快照集排程:
1. 在 Enterprise Manager,展开想要修改的服务器,展开 复写监视器 数据夹,展开 代理程序 后,选择 快照集代理程序 数据夹。
2. 在右手边的窗格中,点选欲修改的发行集按下鼠标右钮,叫出快捷菜单后选择 代理程序属性 ,如图 26-33 所示。


图26-33 Enterprise Manager 中的一个发行集
3. 进入 属性 窗口,如图 26-34 所示。这个窗口显示发行集代理程序可选择的属性。


图26-34 「代理程序属性」窗口的「一般」卷标页
4. 在这个画面中选择 排程 标签页,如图 26-35 所示。在此标签页中可以检视现存的发行集排程。 新的排程 按钮允许新增排程,而 新的警示 按钮则允许新增警示。 编辑 按钮可用来修改已存在的排程,而 删除 按钮用来删除已存排程。


图26-35 「代理程序属性」窗口的「排程」标签页
5. 选择 编辑 进入 编辑作业排程 对话框,如图 26-36 所示。这个对话框允许将快照集代理程序设定符合需求的排程。在点选 重复执行 时按下 变更 按钮,进入 编辑重复执行作业排程 对话框。可以设定在当 CPU 休息时才执行代理程序。这样的设定在某些状况下有其优点,不过一但设定这个选项,您就无法预期代理程序会在何时执行。输入合适的排程后按 确定 按钮。


图26-36 「编辑作业排程」对话框
当完成上述步骤,发行者会在发行者数据库中更新快照集的信息。这个排程会决定快照集建立的频率。若是想要更新快照集复制到订阅者的频率,必须为订阅设定发行集代理程序。
启用订阅者

在设定订阅者前,必须在发行集数据库中启用订阅者。启用订阅者可以让 SQL Server 系统和发行集数据库沟通。在建立了发行集数据库和订阅者间的联机后,就可以设定订阅者(这个过程会在下一节 〈设定订阅者〉 解释)。现在先参照以下步骤启用订阅者:
1. 在 Enterprise Manager,选择 工具 菜单。选择 复写 / 设定发行、订阅及散发者 ,或是在选择 工具 菜单中直接选择 精灵 / 复写 / 设定散发暨散发精灵 ,进入 发行者和散发者属性 窗口,如图 26-37 所示。
2. 发行者和发行者属性窗口,选择 订阅者 标签页,如图 26-38 所示。本卷标页中可以看到在网络上已定义的订阅者清单。订阅者必须已定义在清单中才可接收订阅。


图26-37 「发行者和散发者属性」窗口
这个标签页中可以指定,哪些订阅者对标签页中列出的发行者有订阅权限。在第一次开启 发行者和散发者属性 窗口时,由于还没有新增任何订阅者,因此窗口中仅列出发行者系统。



图26-38 「发行者和散发者属性」窗口的「订阅者」标签页
3. 欲新增订阅者,先按下 新增 按钮进入 启用新的订阅者 对话框,如图 26-39 所示。在此对话框中,选择想要启用的订阅者(SQL Server、Microsoft Access、OLE DB、ODBC等)。这里的设定决定新订阅者所订阅的发行集类型。选择 SQL Server Database 后按下 确定 。


图26-39 「启用新的订阅者」对话框
4. 现在会进入 注册的 SQL Server 属性 窗口,如图 26-40 所示。由于在前一个步骤选择的是 SQL Server 数据库,因此在这个窗口所出现的选项都和 SQL Server 联机的选项有关。如果在前一个步骤中选择的是其它的选项,则会出现不同的窗口。可指定订阅者的系统名称和账户认证模式。


图26-40 「注册的 SQL Server 属性」窗口
如果想选取更多的 SQL Server 系统,按下在服务器旁的 [...] 按钮,可进入选择服务器对话框,如图 26-41 所示。在这里可以选择想要设为订阅者的服务器。



图26-41 「选择服务器」对话框
5. 步骤四的设定完成后按下 确定 ,并在 注册的 SQL Server 属性 窗口中也按下 确定 , 发行者和散发者属性 窗口会再出现,并且在 订阅者 的清单中会出现上个步骤中新增加的订阅者,如图 26-42 所示。新增后的系统就可以当作所指定发行者的订阅者。


图26-42 显示新订阅者的「发行者和散发者属性」窗口
设定订阅集

在设定了发行者、散发者和发行集,以及启用订阅者后,就可开始设定订阅。可以设定订阅是来自订阅者或是发行者。如果是来自订阅者,则可设定提取订阅;如果是来自发行者,则可设定发送订阅。
设定提取订阅

提取订阅的设定及管理在订阅者端,因此,在开始 提取订阅精灵 前要在 Enterprise Manager 选择订阅者系统。通常,订阅者并非经常联机到网络使用提取订阅。举例来说,业务人员可设定提取订阅,每次当使用笔记型计算机时才联机更新订阅。参照以下步骤设定提取订阅:
1. 在 Enterprise Manager 选择 工具 / 复写 / 提取订阅至 ,在 提取订阅至 对话框中选择 提取新的订阅 ,或是在 工具 中选择 精灵 / 复写 / 提取定于精灵 。任何一种方式都可以进入 欢迎使用提取订阅精灵 ,如图 26-43 所示。


图26-43 「使用提取订阅精灵」的欢迎画面
2. 选择 下一步 进入 寻找发行集 画面,如图 26-44 所示。这里可以选择寻找发行者的方式,可以是透过注册服务器(默认值),或是在 Activity Directory 中寻找。这里可以决定如何搜寻发行者,这里的决定影响下一个画面呈现的结果。


图26-44 「寻找发行集」画面
3. 按 下一步 进入 选取发行集 画面,如图 26-45 所示。这里可以看到有哪些会被应用在复写的发行集。注册在 SQL Server 系统上的服务器在这里都会列出。展开所选的发行者系统,并选择要使用的发行集,如图 26-45 所示。
如果需要注册一个服务器,按 注册服务器 进入 注册服务器属性 窗口。在上一节中启用订阅者时我们曾经使用此窗口。
4. 选取发行集后按 下一步 进入 指定同步代理程序登入 面,如图 26-46 所示。这里可以指定代理程序联机到发行者时的方式和登入账号。默认值选项是 仿真 SQL Server 代理程序账户 ,这通常也是较理想的选项。如果设定系统中的 SQL Server 代理程序使用特别的登入,就必须在这里指定。


图26-45 「选取发行集」画面



图26-46 「指定同步代理程序登入」画面
5. 选择 下一步 进入 选取目的数据库 画面,如图 26-47 所示,这里可以指定复写的发行项要放在哪个数据库中。图 26-47 显示我们为订阅集选取了pubs数据库。如果要建立新的数据库,按 新增 进入 数据库属性 窗口。


图26-47 「选取目的数据库」画面
6. 如果开启了 数据库属性 窗口新增数据库,新增完成后按 确定 就可回到 选取目的数据库 窗口。然后再按 下一步 进入 初始化订阅 画面,如图 26-48 所示。选择 是,初始化结构描述与数据 来开始订阅者端的数据库结构和数据。


图26-48 「初始化订阅」画面
7. 按 下一步 进入 快照集传送 画面,如图 26-49 所示。这里可以选择快照集从哪里传送。通常接受默认值的位置即可。


图26-49 快照集传送画面
8. 按 下一步 进入 设定散发代理程序排程 画面,如图 26-50 所示。这个画面可以选择连续更新、依排程更新、或是仅在需要时更新。
记住本例中我们所设定的是快照式复写,所以当更新产生,所有的发行项内容都会更新至订阅者端。这里的选项可依您数据更新的频率,以及保持数据同步的必要性来决定。按下 变更 按钮可以进入 编辑重复执行作业排程 对话框(本章之前有提及),这里可以自订重复执行作业的排程。
9. 按 下一步 进入 启动必要的服务 画面,如图 26-51 所示。如果 SQL Server 代理程序还未被启动,从这个画面中可以启动服务。这里可以看到 SQL Server 代理程序是否已在订阅者端启动。若是还未被启动,会提示您启动该代理程序,若是想手动启动代理程序,在Enterprise Manager 中展开 管理 数据夹,在 SQL Server 代理程序中按下鼠标右钮,在快捷菜单中选择启动或停止 SQL Server 代理程序即可。


图26-50 「设定散发代理程序排程」画面



图26-51 「启动必要的服务」画面
10. 如果 SQL Server 代理程序未被设为自动启动,就会看到 设定 SQL Server 代理程序 画面,按下 确定 即可。如果 SQL Server 代理程序已设为自动启动,就不会看到这个画面。
11. 按 下一步 进入 完成提取订阅精灵 画面,如图 26-52 所示。选择 完成 即可完成订阅集的设定作业。


图26-52 「完成提取订阅精灵」画面
现在发行项会依设定的排程,在订阅者端被复写。在确认发行集代理程序的排程后,再启用复写。如果没有设定及时产生快照集至散发者端,在快照集代理程序依自己排程执行的情况下,可能需要一些时间才能将数据送至散发者端。就算复写在执行中,实际的数据也会在快照集代理程序作业完成后才会送至订阅者端。
设定发送订阅

发送订阅要在发行者端启动,可使用 发送订阅精灵 来设定。当使用发送订阅,复写的排程由发行者端决定。发送订阅适用于联机固定的订阅者。使用这类型订阅集的目的是在散发者端就可以方便的管理所有的订阅集,不需要在订阅者端个别的管理每一个订阅集。请参照以下步骤使用 发送订阅精灵 :
1. 使用以下任一方法进入 发送订阅精灵 。第一种方法是在 Enterprise Manager 中点选 工具 ,选择 复写 / 将订阅发送至其它服务器 ,进入 建立与管理服务器的发行集 对话框,如图 26-53 所示。然后选择 发送新的订阅 。


图26-53 「建立与管理服务器的发行集」对话框
或是使用第二种方法,在 工具 中选择 精灵 ,在 选择精灵 对话框中展开 复写 ,选择 建立发送订阅精灵 ,然后按下 发送新的订阅 ,任何一种发法都可以进入 欢迎使用发送订阅精灵 画面,如图 26-54 所示。



图26-54 「欢迎使用发送订阅精灵」画面
2. 按 下一步 进入 选择订阅者 画面,如图 26-55 所示。这里可以指定发行集要发送至哪一个订阅者端。本例中,我们选择的系统是 B6S8A9。这些订阅者必须被启用,如稍早 〈启用订阅者〉 一节所示范。


图26-55 「选择订阅者」画面
3. 选择 下一步 进入 选取目的数据库 画面,如图 26-56 所示。这里可以指定订阅者端的数据库,可以选择已存在的数据库,或是建立新的数据库。输入所要的数据库名称,或按 浏览或建立 按钮后从清单中挑选。要建立新的数据库,在按下 浏览或建立 按钮后选择 建立新对象 ,就可进入 数据库属性 窗口设定。当完成建立新数据库后,按下 确定 就可回再到 选取目的数据库 画面。


图26-56 「选择订阅者」画面
4. 按 下一步 进入 设定散发代理程序排程 画面,如图 26-57 所示。在这里可以选择连续更新订阅集或选择依排程更新订阅集。以快照式复写来说,选择连续更新并不合理。如果要变更排程,按下 变更 按钮进入之前所解释过的 编辑重复执行作业排程 对话框,更改排程。


图26-57 「设定散发代理程序排程」画面
________________________________________
说明
精灵中设定的排程是用来更新快照集客户端的排程,和更新快照集的排程必须要协调。如果快照集本身没有更新,传送到客户端的的数据就是旧的快照集数据。
________________________________________
5. 按 下一步 进入 初始化订阅 画面,如图 26-58 所示。在这里可以指定订阅集是否开始。初始化结构描述和在订阅者端的数据集已由预设指定。如果结构已存在, 否,订阅者已经有结构描述和数据 这个选项就不会提供选择。这个画面中也可以启动快照集代理程序。建议在开始快照集时就启动快照集代理程序,否则就必须手动启动代理程序。设定快照集代理程序排程,使其和发送订阅的排程具一致性也很重要,可参照本章在 〈修改快照集排程〉 一节的叙述。


图26-58 「初始化订阅」画面
6. 按 下一步 进入 启动必要的服务 画面,如稍早的图 26-51 所示,可指定用自动启动的方式启动 SQL Server 代理程序。
7. 按 下一步 进入 完成发送订阅精灵 画面,如图 26-59 所示。检查设定是否正确,按 完成 开始将快照集复制到订阅者的程序。您会看到一个描述程序进行的对话框,最后会出现操作程序完成的消息框。当精灵完成后,发送订阅就建立,且会定期更新。


图26-59 「完成发送订阅精灵」画面
管理复写

在学习了 SQL Server 2000 环境中设定及安装复写数据库后,可以利用 Enterprise Manger 中的监控功能,管理复写环境或找出任何使复写无法运作的问题。
复写代理程序的监控与管理

在 Enterprise Manager 中的 复写监视器 数据夹可以找到 代理程序 。请参照以下步骤存取代理程序:
1. 展开服务器群组、您的服务器、及复写监视器数据夹。
2. 如果展开的是发行者端服务器, 发行者 和 代理程序 数据夹会出现在 复写监视器 内。 发行者 数据夹内包含属于此服务器的所有发行者。 代理程序 数据夹内含有 快照集代理程序 、 散发代理程序 、 合并代理程序 ,及用来清除历史登入数据的 其它代理程序 。
3. 虽然代理程序通常不需要被启动或停止,但需要时可使用 复写监视器 来执行。如果复写系统并未依设定执行,很可能是因为没有启动快照集代理程序。(这就是为什么之前在设定过程中我们建议选择立刻执行初始快照集)。在 Enterprise Manager 中按下一个代理程序的数据夹,检查代理程序的状态,并在右方窗格中检示有关代理程序的的的信息,如图 26-60 所示。这里可以决定是否执行某个代理程序,也可以看到是否该代理程序正在使用中。当启动了某个代理程序,代理程序会执行直到任务完成,然后停止作业。接者,SQL Server 代理程序会依排程复写代理程序。


图26-60 在Enterprise Manager 中的快照集代理程序
4. 在代理程序中按下鼠标右钮叫出快选菜单,在这里有几个可以提供监视和管理代理程序的选项,如图 26-61 所示。


图26-61 复写代理程序选项
这些选项的简介如下:
o 错误详细数据 :列出任何曾发生的错误清单。

o 代理程序历程记录 :列出代理程序活动。

o 代理程序属性 :可修改复写代理程序的排程,数据库存取方式,代理程序的步骤,以及作业完成后的执行动作,如可选择以电子邮件通知代理程序所执行事件的完成。

o 代理程序设定文件 :可检视及修改代理程序参数,如登入逾时断线时间、批次大小、及查询逾时断线时间的设定等。

o 启动代理程序与停止代理程序 :可以启动或停止代理程序。

o 重新整理速度和设定值 :可修改重新整理执行监控数据的频率。

o 选取字段 :可指定结果集中想要检视的数据行。

o 说明 :提供关于此窗口的说明信息。

________________________________________
说明
发行集代理程序的监控会在下两章讨论。
________________________________________
停用复写

利用 Enterprise Manager 可停用所有或部分的复写,只要在 Enterprise Manger 的复写精灵中移除选定的复写组件即可。本节会学习如何简单地执行这项作业。
移除发送订阅

在散发者系统中,使用Enterprise Manager的发送订阅精灵就可移除发送订阅。在启动发送订阅精灵后就会出现 建立与管理发行集 对话框,点选要删除的订阅后,按下右方 删除发行集 的按钮,出现提示方块,询问是否确认删除此订阅。按 是 即可移除订阅。
移除提取订阅

在订阅者系统中,使用 Enterprise Manager 的发送订阅精灵就可移除提取订阅。在启动提取订阅精灵后就会出现 建立与管理发行集 对话框,点选要删除的订阅后,按下右方 删除发行集 的按钮,出现提示方块,询问是否确认删除此订阅。按 是 即可移除订阅。
移除散发和发行

要移除散发和发行,必须开启 停用散发暨发行精灵 。在停用精灵的第一个画面,必须指定是否停用所有散发及发行,或仅移除发行。如果选择的是第一个选项,服务器上所有的发行集、订阅和散发者都会被移除。如果选择的是第二个选项(预设选项),就只有发行集会被移除。在选项决定后,会出现确认画面,按下 是 按钮后就会移除所选的复写组件。
快照式复写校调

本节中会学习如何设定及校调快照式复写系统至最佳化执行效能。快照式复写系统的设定与校调,比起交易式和合并式复写系统要来的简单。在交易式和合并式复写中,快照集在一开始时被传送到订阅者端,然后小型的数据量会不断的传送到这些系统中。然而在快照式复写中,所有的数据库都会重新整理,因此在操作上会简单的多。在本节中我们先讨论快照式复写的属性,然后再讨论其设定、监控及校调的重点。
快照式复写

由于快照式复写先将已存在的数据库复制散发者,然后到订阅者,因此快照式复写的执行效能取决于特定的系统组件是否有传送大量数据的能力。以下为影响快照式复写执行效能的几项因素,若是正确的指定快照集大小和系统设定,就可以降低这些因素对效能的影响。
发行者的 I/O 效能 :不论是整个数据库或是部分数据库都是从发行者端复制,因次发行者端 I/O 子系统的执行效能是其中一个影响快照式复写执行效能的因素。快照集的建立作业和 I/O 较有关系,通常和 CPU 较无关。

散发者的 I/O 效能 :散发者端会在同一时间接收及散发大量数据,因此散发者的 I/O 子系统不够快,就会影响快照集建立的效率。

订阅者的 I/O 效能 :散发者会试者在同一时间散发所有或部分的数据库到订阅者端。如果订阅者端 I/O 子系统的执行效能不够好,就会影响复写的执行。

发行者、散发者和订阅者间的网络频宽 :由于三者间的数据传输数据量很大,因此很容易就在网络上产生瓶颈。确认网络频宽足以负荷复写的执行。

设定快照式复写

本节会提供一些关于快照式复写设定的要点。由于快照式复写利用发行集数据库作关于复写程序的信息状态分类,而并非复写数据本身(在一个数据夹),因此通常不需要在散发者端校调 SQL Server。这些要点可帮助您将快照式复写系统以最佳化设定,设定要点如下:
在发行者、散发者和订阅者端设定足够的 I/O 容量

设定发行者,让快照集保存在发行者系统

将散发者和发行者设定在同一系统上

增加 BCP 执行绪数量

现在来仔细研究这些设定要点。
设定足够的 I/O 容量

如前所述,快照式复写在同一时间复制大量的数据,所以速度慢的磁盘子系统会降低整个程序的的速度。因此将特定的 I/O 子系统执行效能增加,就可提高复写程序效能。在一个含复写功能的系统中(如 SQL Server 系统),交易记录文件应该被放在自己的 RAID 1 磁盘区中以保护数据。而数据夹则放置在一个或数个 RAID 10 到 RAID 5 磁盘区中。使用哪一个 RAID 层级取决于所设定的是发行者、散发者,还是订阅者。
设定发行者的 I/O 子系统 不论发行者端的数据夹使用的是 RAID 5 或是 RAID 10 磁盘区,都取决于数据在该磁盘区存取数据的读写比例。如 第5章 所提及,如果数据的写入超过 10% 以上,RAID 10 就比 RAID 5 适用。不论选择使用哪一个 RAID 层级,应该依 第5章 和 第6章 所提的方式,适当分配 I/O 子系统大小。
设定散发者的 I/O 子系统 由于快照式复写将数据存在散发者而非 SQL Server 数据库中,所以必须确定快照集的位置有足够的 I/O 容量容纳大量的写入数据。所以,快照集的位置较适合放在 RAID 10 磁盘区。在本节稍后会看到,在某些情况下,将快照集存在散发者较有效率。
设定订阅者的 I/O 子系统 将订阅者数据夹放在 RAID 10 磁盘区可以加强快照式复写的效能,这是因为订阅者端在快照式复写时所遇到大量的资料写入。
________________________________________
说明
当设定快照式复写的 I/O 子系统时,应该考虑快照集发行的大小。如果快照式复写所复制的数据量很小,放在任何 RAID 层级都很方便。
________________________________________
选择快照集位置

由于快照式复写将快照先复制到散发者,然后到订阅者,您可以设定将这个多余的步骤由复写中移除。散发者仍被使用,只是现在把快照设定储存在订阅者端。这样就可以避免多余的网络复制操作。请参照以下步骤设定散发者,让快照存放在发行者端:
1. 在散发者端,叫出 设定散发暨发行精灵 ,并选择 发行者 标签页,如图 26-62 所示。


图26-62 「发行者」标签页
2. 按 [...] 按钮,进入 发行者属性 窗口,如图 26-63 所示。


图26-63 「发行者属性」窗口
3. 在这个窗口中,可以设定快照集在系统内的位置。在设定前必须确定这个位置的 I/O 容量足以应付快照集对系统造成的负荷。
________________________________________
说明
当在散发者端设定快照集,也等于设定了所有的发行集位置,所以如果散发者端有不只一个发行者系统,就不能做这样的设定。
________________________________________
在同一个系统内设定散发者和发行者

如果所使用的复写类型只有快照式复写,就可以简单的将发行者和散发者设定在同一个系统上。由于这样的设定可以不必透过网络将快照集复制到散发者端,所以可以降低网络流量。但是,如果发行者的效能很重要,最好还是将快照集保留在散发者端,让散发者端处理散发的问题。
增加 BCP 执行绪

透过增加快照集程序所使用的 BCP 执行绪,可以增加复写效能,请参照以下步骤设定:
1. 在 Enterprise Manager 中展开 复写监视器 数据夹,展开 代理程序 数据夹,然后选择 快照集代理程序 数据夹。在右方的窗格中,点选选择的发行集后按下鼠标右钮,在快捷菜单中选择代理程序设定文件,进入对话框,如图 26-64 所示。


图26-64 「快照集代理程序设定文件」对话框
2. 按 新增设定文件 按钮,进入 复写代理程序设定文件的详细数据 对话框,以修改或新增设定文件,此对话框如图 26-65 所示。在这里更改 MaxBcpThreads 的参数。


图26-65 「复写代理程序设定文件的详细数据」对话框
3. 当设定完成后,将设定档命名后按下 确定 ,就可储存此设定档。然后在 快照集代理程序设定文件 的对话框中选择这个设定档即可。
监视快照集系统

您可以使用 Microsoft Windows 2000 效能监视器来监视快照集。当使用 SQL Server 复写时,会在效能监视器中加入几个对象。另外,有一些效能监视器的标准对象对于监视快照式复写也很有用。这些对象包括:
SQLServer:Replication Agents :计算现在系统中有几个不同类型的代理程序正在执行。

SQLServer:Replication Dist :提供关于散发者延迟时间的信息。

SQLServer:Replication Snapshot :提供关于快照式复写效能的信息。

PhysicalDisk :提供关于 I/O 活动的信息,有很多效能上的问题都和 I/O 有关,所以这项信息对快照式复写格外有用。

Processor :允许监视系统处理器。

System :提供关于整个系统的信息。

这些计数器可使您清楚的知道复写程序如何的执行,如果系统的设定和校调都很适当,快照集的执行过程就会非常的快。要使复写的执行最佳化,注意以下可能产生问题的地方:
I/O 效能瓶颈 :I/O 率是否太高?注意 I/O 每秒的执行及每一次 I/O 的执行所需秒数。

网络效能瓶颈 :这并不是一个容易发现的瓶颈,但可以试着将网络输送量(network throughput)和快照式复写所需的时间比对。

校调快照集系统

快照集系统校调方式通常用简单的设定即可。影响复写效能最明显的问题不外乎就是 I/O 和网络效能,您必须看看您的网络效能是否足以负荷复写的所需。现在看看以下的范例。
假设您有一个 5GB 的数据库。如果您用的是 10BaseT 网络,网络的最大频宽就是每秒 10Mbps,差不多是每秒 1 megabyte(MBps)。因此,一个 5-GB 的数据库就要花掉 5120 秒来传送,或者说要花 1.4 小时在这个网络上复制。计算方式如下:(5 GB * 1024 (MB/GB)) / 1 (MBps) = 5120 秒,换算为 1.4 小时。比较起来,一个 100BaseT 网络就只需要 8.3 分钟就可完成同样的复写程序。一个 Gigabit 以太网络需要 51 秒完成同样的动作,计算的结果整理在表 26-1 中:
表26-1 网络比较表
网络速度 执行一个 5-GB 数据库快照集所需时间
10BaseT 5120 秒
100BaseT 516 秒
Gigabit 以太网络 51 秒
所以网络对执行效能影响由此可见。要计算如范例中般的精确,首先要了解执行一次的复写到底需要多少的时间。如果复写的时间太久,可能真的在哪里遇到瓶颈,如 I/O、内存、磁盘等等。
本章总结

本章学到 SQL Server 三种复写类型:快照式复写、交易式复写和合并式复写。此外也学到了 SQL Server 复写的的发行及订阅模式,并学到如何设定快照式复写。在 第27章 和 第28章 中,会学习比较复杂的复写类型,也就是不断提及的交易式复写和合并式复写。