SQL Server数据库实用技术(111)
时间:2007-11-09 来源:不详 作者:迈克DB
5 环路检测
环路检测主要是基于以下考虑而被提出的,即如果订购者的立即更新事务在出版者和订购者都被成功提交后,出版者要在以后的某一时刻将该事务复制到其它订购者,但是由于提交立即更新事务的订购者已成功提交了该事务,因此也就没有必要再将此事务从出版者那里复制给该订购者。如何解决该问题呢?环路检测就是用来确定一事务是否已在某订购者服务器处被成功提交,从而避免该事务又一次应用于订购者服务器,最终因破坏了完整性约束(如向同一表中插入同一行)导致复制中止。
16.6.2 排队更新订购者
排队更新选项是SQL Server 2000 的新增功能。与立即更新订购者一样,排队更新允许快照复制或事务复制的订购者对复制数据的修改,然后将修改反映到出版者那里。但不同的是,排队更新并不要求订购者与出版者之间的网络连接一直处于激活状态。
通常在创建出版物时对该复制选项进行设置,如果使用了排队更新选项,那么订购者对复制数据的修改是保存在一个队列中。当订购者与出版者之间的网络连接恢复时,这些队列中的事务将按先后顺序被应用到出版者。
织梦内容管理系统
由于订购者对复制数据的修改是以异步的方式反映到出版者那里的,所以,一旦同一数据被出版者或其它的订购者修改,则容易出现复制数据的修改冲突。在创建出版物时,我们通常也要决定冲突的解决策略,从而对可以出现的冲突提供解决方案,保证复制数据的一致性。
如果用户经常读到数据,并且偶尔修改数据,则在该情况下推荐使用排队修改,这样订购者即使在离线的情况下仍可以对复制数据进行修改。
在SQL Server 2000 中,若设置了立即更新订购者选项,则需要以下组件的支持:
触发器
队列
存储过程
队列阅读代理
1 触发
触发器依附在订购者的出版表上,当进行排队更新时,触发器用来捕捉订购者上执行的事务,然后将这些事务包在消息中并传送到队列中。
2 存储过程
在创建出版物时,若指定了排队更新选项,则在出版数据库中对出版表执行插入、删除、更新的存储过程将自动生成。队列阅读代理将调用存储过程在出版者上执行队列中的事务,并进行冲突检,测如有必要则产生一些补充命令,这些命令首先传给分发数据库,然后传送给订购者。除此之外,在出版者上仍要创建记录冲突信息,并将冲突信息传递给相关订购者的存储过程,如果检测到冲突,这些存储过程将由队列阅读代理调用。 本文来自织梦
3 队列
队列主要用来存储包含订购者事务的消息,订购者与分发者都有一个消息队列。在网络断开的情况下,包含订购者事务的消息首先存储在订购者消息队列,然后在网络接通时被传送到分发者消息队列。队列阅读代理读到这些消息并将消息中的事务应用到出版者。
4 队列阅读代理
队列阅读代理运行在分发者上多线程代理,其主要任务就是从消息队列中读取信息并将事务应用到出版者。
16.6.3 转换复制数据
转换复制数据是SQL Server 2000 新增的功能。用可转换订购(Transformable subscriptions)来实现复制数据的转换。可转换订购主要是利用数据转换服务(DTS)所提供的功能,如数据移动、传递映射、过滤等,从而可以根据每个订购者的具体要求来定制、发送复制数据。它可以在快照复制和事务复制中使用。比如,在以下情况下我们应该使用转换复制数据选项:
文章评论
共有位Admini5网友发表了评论 查看完整内容