28. 合并式复写
合并式复写简介
使用合并式复写
设定合并式复写系统
管理复写
合并式复写的监控与校调
本章总结
合并式复写和交易式复写不同的地方在于,合并式复写可多方作业。利用合并式复写让发行者和订阅者都可以更新发行集。虽然交易式复写也允许订阅者更新发行集,但是这两种复写类型的功能性却有很大的差异。本章中会学到合并式复写的运作方式,以及如何设定、监控与校调合并式复写。
合并式复写简介
合并式复写在发行者与一个或多个订阅者之间执行双向复写。这样可以允许数个系统拥有可以更新的发行集副本,并且可以修改自己的发行集副本。在订阅者的修改会被复写至发行者,然后再到其它订阅者。
不像交易式复写,合并式复写的执行方式是在发行者和订阅者安装触发程序。当发行集或发行集的副本有变更时,会触动适当的触发程序,产生复写命令,并队列等待以传送至散发数据库。这个复写命令最后会被送至散发数据库,然后传送到参与复写的系统。基于这样的执行方式,合并式复写会比交易式复写的负担来的大,尤其是在发行者。
在本章中您会学到在合并式复写中两个重要的成员,一个是 合并代理程序(Merge Agent) ,一个是散发数据库。 合并代理程序 会合并自上一次合并后所发生的增量数据变更。当您使用合并式复写时(并不会使用散发代理程序),合并代理程序会与发行者和散发者通讯。快照代理程序只用于建立初始数据库。合并式代理程序会执行以下的作业:
1. 合并代理程序上载所有订阅者变更的数据。
2. 没有冲突的所有数据列会立即上传(这些数据列即为在发行者与订阅者都没有变更的资料列)。有冲突的数据列(这些数据列即为在发行者与订阅者都有变更的资料列)会被送至冲突解决器。 解决器(Resolver) 是一种用来解决合并式复写中产生冲突数据的模块,您可以自行设定适用于自己的解决器。
3. 所有的变更会套用至发行者。
4. 合并代理程序上载所有来自发行者的变更数据。
5. 没有冲突的数据列立即上传;有冲突的送至冲突解决器。
6. 所有变更套用至订阅者。
这个处理过程会依照排程重复执行。在发送订阅模式中,合并代理程序在散发者执行;在提取订阅模式中,合并代理程序在订阅者执行。每一个合并式发行集都有自己的合并代理程序。
使用合并式复写
合并式复写适用于需要双向复写的情况,其应用层面十分广泛,其中可允许订阅者修改递增数据这一项就带来了不少好处。以下为合并式复写的应用:
• 公司内部数据共享 :例如一个公司内的负责薪资、应付账款及应收帐款的部门就可以存取一样的数据。每一个部门的使用者可以自行修改数据,然后在部门的系统上,合并所有的修改。
• 多点资料共享 :当不同地点的使用者需要用到相同的数据,并且需要修改数据时,就可利用到合并式复写。
• 讯息传递 :合并式复写可当作是讯息传递的系统,可以修改数据并将变更后的数据传送回到原系统。
设定合并式复写系统
设定合并式复写和设定快照式与交易式复写类似。首先必须设定发行集,然后将发行集以发送或提取的方式供订阅者订阅。
________________________________________
说明
在设定任何类型的 SQL Server 复写之前,您必须先设定发行与散发。请参阅 第26章的〈设定发行与散发〉 一节的叙述。
________________________________________
设定发行集
设定合并式复写发行集的过程和之前两种类型的发行集略有不同,以下为设定的步骤:
1. 使用 Enterprise Manager,透过下列任一步骤执行设定,选择 工具 / 复写 ,按一下 建立和管理发行集 ;或是选择 工具 / 精灵 ,选择 建立发行集精灵 。用任一方式都可进入建立和管理发行集的对话框,如图28-1 所示。这里可选择预发行的数据库或数据表。
图28-1「建立和管理发行集」对话框
若发行集已存在,下列的按钮就会显示:
o 发送新的订阅 :您可以为已经存在的发行集建立新的发送订阅,这个步骤将会在本章的 〈设定订阅〉 一节讨论。
o 属性与订阅 :可更改发行集与订阅属性。
o 指令化发行集 :可建立指令码用以建立更多发行集。
o 删除发行集 :可以删除已经设定的发行集。
2. 选择发行集数据库(如图28-1,选择 Northwind 为发行集数据库),选择 建立发行集 进入 欢迎使用建立发行集精灵 窗口,如图28-2所示。选取 显示这个精灵中的进阶选项 选项。
图28-2「建立发行集精灵」的欢迎窗口
3. 按一下 下一步 进入 选取发行集的数据库 窗口,如图 28-3 所示。可再次选择欲发行的数据。在步骤二选取的数据库会反白显示。
图28-3「选取发行集的数据库」画面
4. 按一下 下一步 进入 选取发行集类型 画面,如图28-4 所示。
图28-4「选取发行集类型」画面
您可以选择任一复写类型,三种发行集的功能如下:
o 快照式发行集 :可以周期性的复写发行项的快照集至订阅者。您可以使用任何资料表建立快照式发行集。
o 交易式发行集 :可以建立交易式复写发行集,该发行集会以发行者的变更来更新订阅者数据。只有数据表有主索引键时,才可以建立交易式复写的发行项。
o 合并式发行集 :可以建立合并式复写发行集,该发行集允许您在发行者与订阅者之间双向复写。您可以使用任何数据表建立合并式复写的发行项。
5. 按一下 合并式发行集 ,按一下 下一步 进入 指定订阅者类型 窗口,如图28-5 所示。这个窗口可以指定是否所有的订阅者执行 SQL Server。图28-5显示默认值,预设的设定指定所有的订阅者都执行 SQL Server 2000。如果接受此设定值,就是将复写设定为使用原生 SQL Server 2000 的数据类型。其它还可以选择 SQL Server 7.0 的服务器,或其它性质的服务器,这个选项会使复写数据转换回字符格式,当然也会经过一些繁杂的转换手续。
图28-5「指定订阅者类型」窗口
6. 按一下 下一步 进入 指定发行项 画面,如图28-6 所示。在这个画面中,可以指定将资料表或其它数据库对象当作发行项以进行复写。这些发行项构成您所建立的发行集。在左边所列出的画面,可以在 显示 中复选所列出的项目,包括 数据表 、 预存程序 及 检视表 ,一旦选取任何一个项目,在右边的窗口就会列出这些项目的明细。然后您可以在右边的明细中再选取想要发行的数据表,或是回到左边的窗口,选取 全部发行 项目中的所有数据表。记住,每一个数据表、预存程序或检视表都视为一个独立的发行项,而发行集是由一组发行项构成。
图28-6「指定发行项」画面
________________________________________
说明
若在订阅者已存在预存程序,可以利用复写呼叫预存程序,而不需要在网络上传递预存程序的结果。
________________________________________
7. 由于选择的是合并式复写,我们可以替发行项定义更多的属性。按一下 [...] 按钮即可进入 数据表发行项属性 画面设定属性,如图28-7 所示。
您可以透过这个窗口中的卷标页为发行项设定不同的属性,图28-7 即为 一般 标签页。这里可以指定发行项名称与来源数据表拥有者,并且决定数据冲突的定义。预设选项会将同一数据行进行变更视为冲突。
图28-7「数据表发行项」属性中的「一般」标签页
8. 选择 解决器 标签页可指定解决器,如图28-8 所示。如果使用预设的解决器,当冲突发生时,发行者会被视为是胜利的一端。还有,如果在订阅者之间发生冲突,则首先进行同步的订阅者就会被视为是胜利者(而稍后执行的其它订阅者则会被视为是失败端)。您也可以选择其它的解决器或是自订的解决器。
9. 在 合并变更 标签页中(如图28-9),您可以对特定的操作,指定额外的安全性。藉由在 检查使用权限 中选取一个或多个选项,您可以指定合并代理程序的权限以执行特定的操作,或者指定在执行某些操作前先检查。另外,该卷标页中有预设的选项,指定了多重数据行更新的方式,请接受这个默认值。按一下 确定 继续设定。
图28-8「数据表发行项」属性中的「解决器」卷标页窗口
图28-9「数据表发行项」属性中的「合并变更」窗口
10. 按一下 下一步 。检查发行集后的结果会在这里显示,最可能看到的窗口会如图28-10 所示。合并式复写需要一个唯一的识别数据行,这个数据行会自动的帮您加入到数据表内。另外,在识别数据行上将会建立 NOT FOR REPLICATION 选项。
图28-10「发行项的问题」画面
11. 按一下 下一步 进入 选取发行集名称与描述 画面,如图28-11 所示。在这个画面中,简单的指定发行集名称与描述即可。
12. 按一下 下一步 进入 自订发行集的属性 画面,如图28-12 所示。在这个画面中可以决定是否需要定义资料筛选或自订其它发行集的属性,选择 否,依指定建立发行集 。
图28-11「选取发行集名称与描述」画面
图28-12「自订发行集的属性」画面
13. 选择 下一步 进入 完成建立发行精灵 画面。按一下 完成 ,就可看到精灵建立发行集的过程,执行完毕后发行集即成功的建立。
现在检查 复写监视器 的 合并数据代理程序 数据夹,并不会有任何数据出现,这是因为合并代理程序是用于双向复写,因此在复写之前需要先设定订阅者。在订阅者设定完成后,合并代理程序才会出现在复写监控器的数据夹中。
设定订阅
就如同之前两种类型的设定一样,设定合并式复写的最后一个步骤就是设定订阅者。首先必须在散发数据库中启用订阅者,启用的方法以在 第26章的〈启用订阅者〉 一节中介绍过。然后在订阅者或发行者设定订阅,从订阅者可设定提取订阅,而从发行者则可设定发送订阅。
设定提取订阅
设定提取订阅的方式在 第27章的〈设定提取订阅〉 一节中有介绍设定的步骤,由于设定的过程几乎一模一样,因此在这里只简单的带过设定的步骤。
1. 进入 提取订阅精灵 。
2. 进入 欢迎使用提取订阅精灵 画面。
3. 按一下 下一步 进入 寻找发行集 画面,在这个范例中选择在已注册服务器的服务器中寻找发行集。
4. 按一下 下一步 进入 选取发行集 画面,并且选择要使用的发行集。
5. 按一下 下一步 进入 指定同步代理程序登入 画面,指定代理程序联机到发行者时的方式和登入账号。
6. 按一下 下一步 进入 选取目的数据库 画面,指定复写的发行项要放在哪个数据库中。
7. 按一下 下一步 进入 初始化订阅 画面,选择适当的选项。
8. 按一下 下一步 进入 快照集传送 画面,选择快照集传送位置。
9. 按一下 下一步 进入 设定合并代理程序排程 画面。这个画面的设定和 第27章 中的 设定散发代理程序排程 类似,可参照之前的设定逻辑选择适合选项。
10. 按一下 下一步 进入 设定订阅的优先权 画面,如图28-13 所示。优先权的意思是说当冲突发生时有哪些订阅集会优先被认为是正确的。预设的设定(也是建议的设定)指定当冲突发生时,在发行者的设定会优先被用来解决冲突。
11. 按一下 下一步 进入 启动必要的服务 画面,并且启动未被启动的 SQL Server 代理程序。
12. 按一下 下一步 进入 完成提取订阅精灵 画面,检视设定确定无误后,选择 完成 即可完成订阅集的设定作业,现在提取订阅会定期更新。
图28-13「设定订阅的优先权」画面
设定发送订阅
发送订阅要在发行者启动,您可以使用 发送订阅精灵 来设定。请参照以下步骤使用 发送订阅精灵 :
1. 使用以下任一方法进入 发送订阅精灵 。第一种方法是在 Enterprise Manager 中按一下 工具 ,选择 复写 / 将订阅发送至其它服务器 ,进入 建立与管理服务器的发行集 对话框,如图28-14 所示。
图28-14「建立与管理服务器的发行集」对话框
在 数据库与发行集 中选择一个发行集,并按一下 发送新的订阅 按钮。要使用第二种方法进入图28-14 的对话框,请在工具列中选择 工具 ,在选取清单中选择 精灵 ,然后展开 复写 ,并选择 建立发送订阅精灵 。
2. 按一下 发送新的订阅 后,会看到如图28-15 的 欢迎使用发送精灵 画面。
图28-15「欢迎使用发送精灵」画面
3. 按一下 下一步 进入 选择订阅者 画面,如图28-16 所示。这里可以指定发行集要发送至哪一个订阅者。在 启用的订阅者 清单中选取订阅者。
图28-16「选择订阅者」画面
4. 按一下 下一步 进入 选取目的数据库 画面,如图28-17 所示。这里可以指定订阅者的数据库,您可以选择已经存在的数据库,或是依需要建立新的数据库。按一下 浏览或建立 按钮可以看到已经存在数据库的清单。如要建立新的数据库,在按一下此按钮后可再按一下 建立新对象 ,然后在 数据库属性 的窗口中建立新的数据库。
5. 按一下 下一步 进入 设定合并代理程序的位置 画面,如图28-18 所示。指定合并代理程序执行的位置,选择接受默认值即将合并代理程序在散发者执行,您也可以选择在订阅者执行代理程序。除非散发者的工作非常忙碌,否则建议接受默认值。
图28-17「选取目的数据库」画面
图28-18「设定合并代理程序位置」画面
6. 按一下 下一步 进入 设定合并代理程序的排程 画面,如图28-19 所示。在这里可以选择连续更新订阅集或选择依排程更新订阅集。选择依排程更新订阅集,按一下 变更 按钮可进入 编辑重复执行作业排程 对话框更改排程及更新订阅集的频率。记住如果选择的是连续更新,会造成系统的负担。
图28-19「设定合并代理程序的排程」画面
7. 按一下 下一步 进入 初始化订阅 画面,如图28-20 所示。在这里可以指定订阅集是否需要初始化。初始化结构描述和在订阅者的数据集已经由预设指定。如果结构描述已经存在,就无法选取 否, ...这个选项。这个画面中也可以启动快照集代理程序,建议在初始化快照集时就启动快照集代理程序,否则就必须手动启动代理程序。一旦启用了快照集并且开始进行复写,在新的订阅建立之前都不会使用到快照集。每建立一次新的订阅,就要建立新的快照集。
8. 按一下 下一步 进入 设定订阅的优先权 画面,如图28-21 所示。这里可以设定当冲突发生时订阅的优先权。建立接受默认值,也就是当冲突发生时,发行者的设定会有优先权。
图28-20「初始化订阅」画面
图28-21「设定订阅的优先权」画面
9. 按一下 下一步 进入 启动必要的服务 画面,如图28-22 所示。在这里可以启动还未启动的 SQL Server 代理程序。
图28-22「启动必要的服务」画面
10. 按一下 下一步 进入 完成发送订阅精灵 画面,如图28-23 所示。检查所有的设定是否正确后,按一下 完成 开始将快照集复制到订阅者的程序。您会看到一个描述程序进行的对话框,最后会出现操作程序完成的消息框。当精灵完成后,发送订阅就建立,且会定期更新。
图28-23「完成发送订阅精灵」画面
管理复写
在了解如何在 SQL Server 2000 环境中建立与设定复写数据库后,现在可以来学习利用 Enterprise Manager 的监控功能与设定选项,管理与疑难排除当复写不能如预期执行时的问题。
复写代理程序的监控与管理
在 Enterprise Manager 中的 复写监视器 数据夹可以找到 代理程序 。请参照以下步骤存取代理程序:
1. 展开服务器群组、您的服务器,及复写监视器数据夹。
2. 如果展开的是发行者服务器, 发行者 和 代理程序 数据夹会出现在 复写监视器 数据夹中。 发行者 数据夹内包含属于此服务器的所有发行者。 代理程序 数据夹内含有 快照集代理程序 、 散发代理程序 、 合并代理程序 ,及用在清除和历程记录数据的 其它代理程序 。
3. 虽然代理程序通常不需要被手动启动或停止,但需要时可使用 复写监视器 来执行。如果复写系统并未依照设定执行,很可能是由于使用预设的选项而没有立即启动快照集代理程序。(这就是为什么之前在设定过程中我们建议选择立刻执行初始快照集)。在 Enterprise Manager 中按一下代理程序数据夹,检查代理程序的状态,并在右方窗格中检示有关代理程序的信息,如图28-24 所示。这里可以决定是否执行某个代理程序,也可以看到是否该代理程序正在使用中。当启动了某个代理程序,代理程序会执行直到任务完成,然后停止作业。接者,SQL Server 代理程序会依排程复写代理程序。
图28-24Enterprise Manager 中的合并代理程序
4. 在代理程序中按右钮呼叫快捷菜单,在这里有几个可以提供监控和管理代理程序的选项,如图28-25 所示。
这些选项的简介如下:
o 错误详细数据 :列出所有曾经发生的错误清单。
o 代理程序历程记录 :列出代理程序活动。
o 代理程序属性 :让您修改复写代理程序的排程、数据库存取方式、代理程序的步骤,以及作业完成后的执行动作,例如可以选择让系统以电子邮件通知您代理程序执行事件的完成。
o 代理程序设定文件 :可以检视及修改代理程序参数,例如登入逾时断线时间、批次操作大小,以及查询逾时断线时间的设定等。
o 在订阅者端执行代理程序 :可指定在订阅者执行代理程序。
o 在散发者端执行代理程序 :可指定在散发者执行代理程序。
o 启动代理程序与停止代理程序 :可以启动或停止代理程序。
o 重新整理速度和设定值 :可以修改重新整理执行监控数据的频率。
o 选取字段 :可以指定结果集中想要检视的数据行。
o 显示匿名订阅 :指定是否在窗口中显示匿名订阅。
o 说明 :提供关于此窗口的说明信息。
图28-25合并代理程序选项
设定合并代理程序
建立发行集后,可能会需要修改合并代理程序的行为模式。举例来说,你可以指定合并代理程序的启动模式。在连续模式中,合并代理程序在 SQL Server 代理程序启动后也一并启动。而在依照排程执行的模式中,合并代理程序会依照您指定的排程启动,完成读写交易记录文件中复写的交易就停止。更改模式和其它的属性可以提高执行效能,并降低发行者的负担。以下为设定合并代理程序的步骤:
1. 在 Enterprise Manager,展开想要修改的服务器,展开 复写监视器 数据夹,展开 代理程序 后选择 合并代理程序 数据夹。
2. 在右边的窗格中,选取发行集按右钮以呼叫快捷菜单,接着选择 代理程序属性 。
3. 合并代理程序属性窗口出现,如图28-26 所示。
图28-26「合并代理程序属性」窗口中的「一般」标签页
4. 选择 步骤 标签页,如图28-27 所示。在卷标页,我们可以看到合并代理程序执行的步骤,这些步骤执行的动作各为:
o 记录读取代理程序启动讯息 :将讯息记录在 记录读取代理程序 的历程记录中(在散发数据库的MSLogreader_histroy数据表中)。
o 执行代理程序 :依指定的排程启动代理程序,当执行模式为连续时,代理程序会在系统结束时才停止执行。
o 侦测非记录性代理程序的结束 :将代理程序事件失败的讯息放在记录读写器代理程序的历程记录中。
5. 选择 执行代理程序 步骤选择 编辑 按钮进入 编辑作业步骤 对话框,如图28-28 所示。在这个对话框可以设定如何启动合并代理程序。
图28-27「合并代理程序属性」窗口中的「步骤」标签页
图28-28「编辑步骤」对话框中的「一般」标签页
合并代理程序可以设定很多选项。预设的合并代理程序参数可在本步骤中的 命令 方块及 复写代理程序设定文件的详细数据 对话框中变更(稍后会介绍)。可变更的两项参数如下:
o Contunuous :指定是否合并代理程序以连续模式或依排程执行。删除参数即可将合并代理程序依排程执行。
o DistributorSecurityMode :指定合并代理程序使用 SQL Server 或 Windows NT 模式验证。
另外,您也可以在 编辑 对话框中指定其它参数,例如Login Timeout、Buffers、Polling Interval、Query Timeout、散发者和发行者信息及Output。
________________________________________
相关信息
关于这些参数的设定可以在 SQL Server《在线丛书》中找到数据。在 索引 卷标页中输入 合并代理程序 后选择 启动 主题即可。
________________________________________
6. 完成 合并代理程序属性 的修改后,按一下 确定 储存修改。
透过 合并代理程序设定文件 ,可以修改其它的选项,请按照下列的步骤:
1. 在 Enterprise Manager 左边的窗格中,展开 合并代理程序 ,选定发行集后按右钮,叫出快捷菜单,选择 代理程序设定文件 ,如图28-29 所示。
图28-29「合并代理程序设定文件」对话框
注意此对话框所包含的选项比记录读取器代理程序( 第27章 中有介绍)还多。这些设定文件提供了功能范围,让您可选择一个最适合系统的设定文件。
2. 按一下 新增设定文件 按钮以建立一个新的设定档。现有的设定档不允许修改。按下按钮后会看到如图28-30 的画面。
图28-30「复写代理程序设定文件的详细数据」对话框
3. 在此对话框中,可以修改以下的参数:
o BcpBatchSize :在大量复制作业中传送的数据列数目。在套用结构描述变更的作业中执行 bcp 时,「合并代理程序」会使用批次大小来决定记录进度讯息的时间。数值 0 表示未记录任何讯息。
o ChangesPerHistory :记录上传和下载讯息的临界值。
o DownloadGenerationsPerBatch :自「发行者」下载变更至「订阅者」时,单一批次中处理的世代数目。世代被定义为每个发行项的变更的逻辑群组。不可靠通讯连结的默认值为 10。
不过,在各种状况下,每个批次所处理的实际世代数目,会等于 UploadGenerationsPerBatch 设定与已发行的发行项数目加一之间的较大值。
o DownloadReadChangesPerBatch :自「发行者」下载变更至「订阅者」时,单一批次中读取的变更数目。
o DownloadWriteChangesPerBatch :自「发行者」下载变更至「订阅者」时,单一批次中套用的世代数目。
o FastRowCount :指定验证数据列计数时所用的数据列计数方法的型别。数值 1(默认值)表示使用快速的方法;数值 0 表示使用完整数据列计数的方法。
o HistoryVerboseLevel :在合并作业期间记录的历程的数量可为:
? 总是更新相同状态先前的历程讯息(启动、进行、成功等)。若无相同状态的先前记录,则插入新纪录。这一层级会记录最小的讯息数目。
? 插入新的历程记录,除非此记录用于类似闲置(Idle)讯息或长期执行的工作讯息的项目中,此时会更新先前的记录。这一层级会记录层级 1 的讯息,以及其它进行中的讯息。
? 总是插入新的记录,除非它是闲置(Idle)讯息。
可以设定ChangesPerHistory参数,使历程记录对效能的影响减至最小。
o KeepAliveMessageInterval :历程执行绪检查是否有联机在等待服务器响应之前的秒数。可以增加这个值,以避免长期执行批次时,代理程序遭检查代理程序标示为可疑。
o LoginTimeout :在代理程序逾时之前尝试登入的秒数。
o MaxDownloadChanges :在指定的合并工作阶段期间,想要下载的最大变更的数目。由于要处理完整的世代,因此下载的资料列数目可能超过指定的最大值。
o MaxUploadChanges :在指定的合并工作阶段期间,想要上传的最大变更的数目。由于要处理完整的世代,因此上传的资料列数目可能超过指定的最大值。
o MaxDeadlockRetries :合并处理序在遭遇死结(Deadlock)时重新尝试内部作业的次数。可为介于 1 和 100 之间的任何值。
o PollingInterval :在连续模式下,「发行者」或「订阅者」查询数据变更的秒数。
o QueryTimeout :在代理程序逾时之前发出查询的秒数。
o UploadGenerationsPerBatch :自「订阅者」上传变更至「发行者」时,单一批次中处理的世代数目。世代被定义为每个发行项的变更的逻辑群组。不可靠通讯连结的默认值为 1。
不过,在各种状况下,每个批次所处理的实际世代数目,会等于 UploadGenerationsPerBatch 设定与已发行的发行项数目加一之间的较大值。
o UploadReadChangesPerBatch :自「订阅者」上传变更至「发行者」时,单一批次中读取的变更数目。
o UploadWriteChangesPerBatch :自「订阅者」上传变更至「发行者」时,单一批次中套用的变更数目。
o Validate :指定在合并工作阶段结束时是否要加以验证,若是如此,则该验证是何型别。数值 0(默认值)表示无验证。数值 1 表示是仅限资料列计数的验证。数值 2 表示是资料列计数和加总检查码(Checksum)验证。数值 3 表示二进制加总检查码验证(仅可用于 SQL Server 2000)。
o ValidateInterval :设定为连续模式时,验证此订阅的分钟数。
如果合并式复写是依排程模式执行,就会由 SQL Server 代理程序启动,并且会在结束之前,依MaxUploadChanges及MaxDownloadChanges的指定,处理更改的次数。
停用复写
利用 Enterprise Manager 可停用所有或部分的复写,只要在 Enterprise Manger 的复写精灵中移除选取的复写组件即可。本节会学习如何简单的执行这项作业。
移除发送订阅
在散发者系统中,使用Enterprise Manager的发送订阅精灵就可移除发送订阅。在启动发送订阅精灵后就会出现 建立与管理发行集 对话框,按一下要删除的订阅后,按一下右方 删除发行集 的按钮,出现提示方块,询问是否确认删除此订阅。按一下 是 即可移除订阅。
移除提取订阅
在订阅者系统中,使用 Enterprise Manager 的提取订阅精灵就可移除提取订阅。在启动提取订阅精灵后会出现 建立与管理发行集 对话框,按一下要删除的订阅后,再按一下右方 删除发行集 的按钮,出现提示方块,询问是否确认删除此订阅。按一下 是 即可移除订阅。
移除散发和发行
要移除散发和发行,必须开启 停用散发暨发行精灵 。在停用精灵的第一个画面,必须指定是否停用所有散发及发行,或只移除发行。如果选择的是第一个选项,服务器上所有的发行集、订阅和散发者都会被移除;如果选择的是第二个选项(预设选项),就只有发行集会被移除。在选项决定后,会出现确认画面,按一下 是 按钮后就会移除所选的复写组件。
合并式复写的监控与校调
本节将学习如何监控和校调合并式复写系统,使其以最佳化执行。另外也会介绍合并式复写系统的设定要点,以及合并式复写的属性。
合并式复写的属性
合并式复写和其它两种类型的复写方法不太相同,最大的不同处在于合并式复写不采用单向的复写方法,在发行者或任何订阅者都可以进行修改。另外,交易式复写的交易记录文件是被读取以追踪变更,属于 SQL Server 的外部操作;合并式复写则是在复写数据表中建立触发程序来追踪变更。
在首次执行合并式复写时会利用到快照集,不过只会发生一次,因此不需校调快照式复写处理过程。合并式复写同时在发行者与散发者建立数据表,以执行复写。另外,一个 GUID 数据行会被新增至复写的每一个数据表中,这样可以唯一的辨识出每一个数据列,因此复写代理程序才能追踪受影响的变更。
当插入或修改数据列,触发程序会标记该数据列以供复写,日后当合并代理程序被启动时,就会将所有标记的数据列送至散发者数据库以供复写。同时,在订阅者系统中被修改过的数据列,也会由合并代理程序将修改更新至发行者。这样就完成了双向的复写程序。
设定合并式复写
合并式复写需要正确的设定所有参与系统的 I/O 子系统。网络对改善复写执行效能也非常的重要。设定正确的批次操作大小也很重要。如果增加批次操作大小,每个批次操作的内容增多,档案数量较少,这样的设定较有效率。此外,您还可以校调快照式复写。不过,由于快照集应用程序只作用一次,因此可以跳过这个步骤。最后您可以修改合并代理程序,这个修改程序在本章稍早有提及。本节将介绍的是 I/O 与合并式批次操作容量的设定。
设定足够的 I/O 容量
若是 I/O 的容量足够,就能增进复写过程的效能。如同其它的 SQL Server 系统,系统中负责记录复写的交易记录文件应该放在自己的 RAID 1 磁盘区中以便保护数据,而数据文件则应该放在一个或数个 RAID 10 或 RAID 5 磁盘区。和交易式复写相同的地方在于,合并式复写只需微幅的调整标准 I/O 设定。
在发行者设定 I/O 子系统 一般来说,在设定发行者的 I/O 子系统时,应遵照本书中不断提及的重点来设定。和交易式复写不同的地方在于,合并式复写不会增加交易记录文件的负担,只要遵照一般的要点作设定即可。
在散发者设定 I/O 子系统 散发者数据库的交易记录文件应设定在 RAID 1 磁盘区。这样可使得散发者数据库的记录文件达到最佳执行效能,改善散发者的执行效能。
在订阅者设定 I/O 子系统 由于合并式复写是双向的进行,因此订阅者和发行者的校调方式类似,只要遵照一般的要点作设定即可。
设定合并批次操作容量
在繁忙的系统中,您可以利用设定合并批次操作容量的方式改善复写执行。合并批次操作容量决定了单一批次操作中要复写多少有变更的数据列。如果增加批次操作容量,每个批次操作的内容增多,档案数量较少,这样的设定较有效率。
监控合并式复写系统
监控交易式复写活动的方式可透过效能监视器。效能监视器在安装 SQL Server 复写时会加入一些对象,对象如下:
• SQLServer:Replication Agents :计算现在系统中有几个不同类型的代理程序正在执行。
• SQLServer:Replication Merge :提供关于合并式复写的速率数据,包括每秒中冲突、上载与下载次数。请注意这些信息并不会真的一定有办法辅助校调合并式复写。
利用效能监视器来监控这些值可让您了解是否散发者有执行效能上的困难。虽然这些效能监视器数据提供很多有用的信息,但并不一定可找出真正的问题。校调合并式复写最好的方法还是注意网络的执行效能,检查可能会产生网络效能瓶颈的地方。参照前两章的要点,检查散发者的负载是否过重。
校调合并式复写系统
校调合并式复写系统最主要的步骤就是正确的设定和监控系统,这些在前一节中已提及。透过效能监视器监控您的系统,注意网络的效能。不过,对合并式复写数据来说,效能监视器所提供的数据就不是那么有用。反而可能要参考其它 SQL Server 的计数器和 Microsoft Windows 2000 的计数器来校调系统。
第24章 曾经提到,当系统的更新次数频繁,可能需要修改 BCP 批次操作容量和合并式批次操作容量。如果增加 BCP 批次操作容量大小,原来快照集代理程序的执行效能也会增加。如果增加合并批次操作容量,由于每个批次操作的内容增多,档案数量较少,影响系统的次数也减少,是较有效率的设定。不过在复写时会增加较多的工作量。
此外,您可以变更轮询频率,变更轮询频率可以使合并式复写执行的频率增加或减少。不过若非必要,并不建议这种变更。如果要校调轮询时间,试着先变更批次操作容量。
如有必要,还要监控网络是否可承载负荷。如果系统并不是执行的很顺,举例来说,如果 CPU 和 I/O 子系统达到饱和,或是复写过程的时间过长,就可能是网络出了问题。网络的问题就比较棘手,因为网络的问题不是检查效能监视器就可以,可能要用到如 Microsoft System Management Server(SMS)这样的网络监控产品才可以监控网络卡是否已达饱和。如果网络卡已达饱和,解决的办法就是购买更快的网络卡,或是新增一条专属的网络供复写、备份和复原来使用。不论是发行者、散发者或是订阅者,都属于 SQL Server 系统。所以校调这些系统的方式就如同校调 SQL Server 系统时所应注意的要点。
本章总结
本章为复写系列的最后一章,在本章中您应该已经学到合并式复写的执行,及合并式复写的用途。另外,也学习如何正确的设定、监控与校调合并式复写。在下一章中我们将学习 Microsoft Analysis Service 的使用。