合并复制的概述
也许读者对下面的实际例子并不陌生,在某一大型企业的分销系统中,销售经理或一些销售骨干人员经常要外出处理业务,将签订的合同通过手边的笔记本电脑传递到总部销售信息数据库。在这一例子中有两个主要的特;征任何销售经理和销售骨干都能够修改销售信息数据库;只有在进行数据传递时才将源数据库和目标数据库相连。在SQL Server 中,合并复制为这一情况提供了较好的解决方案。
合并复制作为一种从出版者向订购者分发数据方法允许出版者和订购者对出版数据进行修改,而不管订购者和出版者是相互连接或断开,然后当任何(或部分)节点相连时便合并发生在各个节点的变化。在合并复制中,每个节点都单独完成属于自己的任务,不像事务复制和快照复制那样订购者和出版者之间要相互连接,完全不必连接到其他节点,也不必使用MS DTC 来实现两阶段提交就能够在多个节点对出版进行修改,只是在某一时刻才将该节点和其他节点相连(此时所指的其他节点并不一定指任何其他节点),然后将所发生的数据变化复制到这些相连节点的数据库中。假如在复制时因更新同一数据而发生冲突,则数据的最终结果并不总是出版者修改后的结果,也不一定包含在某一节点上所做的任何修改。因为各节点都有自主权,都能够对出版物(复制数据)进行修改,这样在按照所设定的冲突解决规则对冲突处理之后,数据库最终的结果往往是包含了多个节点的修改。
能够看出尽管最后任何的数据库都有相同的结果集,但这个结果是在多个节点一起参和下形成的,是多个修改合并到目标数据库的结果。因此合并复制并不维护事务的一致。
和创建快照复制和事务复制出版物相比,当创建一个合并出版物时,SQL Server 会对数据库连同出版表进行以下处理(见图16-54):
(1) SQL Server 把出版表中的每一行都加上一个标识列,这样在表的多个拷贝间能惟一标识出该行。假如基本表上已存在具备ROWGUIDCOL 属性的标识列,则 SQL Server 将自动把其作为复制表的行标识,假如没有,则或在创建出版物过程中这些表被激活时,或在SQL Server Agent 第一次为该出版物提供服务时, SQL Server 将向表中添加一个具备ROWGUIDCOL 属性的rowguid。
(2) SQL Server 添加一个触发器来跟踪每一行或列数据的变化,并把捕获到的变化存储到几个系统表中,或在创建出版物过程中复制表被激活时,或在SQL Server Agent 第一次为出版物提供服务时,将创建这些跟踪触发器。
[巧夺天工—CorelDRAW入门和进阶实例] [巧夺天工——Flash MX 2004入门和进阶实例]
[1] [2] 下一页
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



