日期:2011-05-02 15:22:00 来源:本站整理
SQL Server数据库技术(108)[MSSQL防范]
本文“SQL Server数据库技术(108)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
??sql server 2000 供应了比从前版本更多的复制选项,此中包含当即更新订购者,列队更新,以列队更新作为热备份的当即更新,传送复制数据,过滤出版数据等.此中前三个选项表示可在订购者处对复制数据举行改正,然后将改正以呼应的方法反映到出版者那边.假如在复制中利用这些复制选项,将使复制的配置和管理更为艰难,所以很有必要对这些复制选项有着更为清楚的熟习和理解.
16.6.1 当即更新订购者
????所谓当即更新订购者是指在复制时利用了当即更新选项.普通而言,快照复制和事件复制都是单向数据复制即数据从出版者的源数据库复制到订购者的目标数据库.但是SQL Server 通过答应订购者来改正复制数据而加强了这种情势的功效.当即更新订购者选项答应既可以在出版者也可以在订购者处对复制数据举行改正.当即更新是指对复制数据举行改正的订购者与出版者之间保持数据的当即更新,即立行将订购者的改正反映到出版者那边.并且供应了对别的订购者而言的潜在事件一致性,即订购者的改正在当即反映到出版者那边之后,答应这一改正没必要即刻同步到别的订购者那边.在成立出版物时对该选项举行设置.
????应当夸大的是,在对数据举行改正的订购者与出版者之间利用了两阶段提交协议,从而要求当订购者对数据的改正在出版者那边被成功提交之后,这一改正才会在该订购者处被提交.假如提交成功,然后出版者才会在分发代理履行时(假如是快照复制,则也可以是在快照被革新时),把这种改正分发到别的的订购者那边.
????与完好的两阶段提交协议相比,当即更新订购者选项降低了复制的复杂性以及事件提交失利的大概性.因为完好的两阶段协议要求全部参与事件的服务器之间必须有坚固的网络衔接,并且对数据的改正只有在全部的参与者中都被成功提交才会见效但当设置当即更新订购者选项时,由于仅在对复制数据举行改正的订购者与出版者之间利用了二阶段提交协议,所以事件的完好性仍得到很好的保护,而在出版者和别的订购者之间并不利用二阶段提交协议,这样便撤消了全部参与者必须保持数据同步的复杂性.
注意:归并复制不答应利用当即更新订购者选项.
在SQL Server 2000 中,若设置了当即更新订购者选项则,需求以下组件的支持;
触发器
存储历程
Microsoft 的分布式事件调和器MS DTC
冲突检测
环路检测
1 触发器
触发器位于订购者,被用来捕捉在订购者上发生的事件并操纵远程历程调用将事件提交给出版者.由于利用二阶段提交协议,从而保证事件在出版者被成功提交后才会在订购者那边提交,假如提交失利,则订购者事件将回滚,从而使订购者数据库与出版者数据库仍能保持同步.
2 存储历程
存储历程位于出版者上,假如自订购者上次接纳复制数据以来,出版者数据库发生的改变与订购者提交的事件不发生冲突,才答应在出版者提交这些来自订购者的事件.若有冲突发生,则回绝事件提交,两处的事件都将回滚.每篇论文都有为INSERT、 DELETE、 UPDATE 事件成立的存储历程.
3 Microsoft 的分布式事件调和器(MS DTC)
在触发器利用存储历程将订购者事件提交给出版者时,需求Microsoft 的分布式事件调和器(MS DTC) 来管理出版者与订购者之间的两阶段提交.远程存储历程利用BEGIN DISTRIBUTED TRANSACTION 来对MS DTC 举行初始化操作.
4 冲突检测
出版数据库中的存储历程利用时间戳来举行检测,以肯定某列被复制到订购者之后能否又被改正.当订购者提交当即更新事件时,它会把某行的全部列(包含时间戳列)送回到出版者,出版者操纵存储历程将该行当前(属于出版者数据库)的时间戳值与从订购者送回的时间戳值举行对比,假如相同,表明在复制给订购者之后没有发生改正,则接纳事件(用从订购者送回的行值来改正该行的当前值).
5 环路检测
环路检测主如果基于以下考虑而被提出的,即假如订购者的当即更新事件在出版者和订购者都被成功提交后,出版者要在今后的某一时刻将该事件复制到别的订购者,但是由于提交当即更新事件的订购者已成功提交了该事件,因此也就没有必要再将此事件从出版者那边复制给该订购者.若何办理该问题呢?环路检测就是用来肯定一事件能否已在某订购者服务器处被成功提交,从而避免该事件又一次利用于订购者服务器,终究因破坏了完好性约束(如向同一表中插入同一行)招致复制中止.
16.6.2 列队更新订购者
列队更新选项是SQL Server 2000 的新增功效.与当即更新订购者一样,列队更新答应快照复制或事件复制的订购者对复制数据的改正,然后将改正反映到出版者那边.但差别的是,列队更新并不要求订购者与出版者之间的网络衔接一向处于激活状况.
????普通在成立出版物时对该复制选项举行设置,假如利用了列队更新选项,那么订购者对复制数据的改恰是保存在一个行列中.当订购者与出版者之间的网络衔接恢复时,这些行列中的事件将按先后次序被利用到出版者.
????由于订购者对复制数据的改恰是以异步的方法反映到出版者那边的,所以,一旦同一数据被出版者或别的的订购者改正,则简单呈现复制数据的改正冲突.在成立出版物时,我们普通也要决意冲突的办理战略,从而对可以呈现的冲突供应办理筹划,保证复制数据的一致性.
????假如用户常常读到数据,并且无意改正数据,则在该情形下举荐利用列队改正,这样订购者即便在离线的情形下仍可以对复制数据举行改正.
在SQL Server 2000 中,若设置了当即更新订购者选项,则需求以下组件的支持:
触发器
行列
存储历程
行列阅读代理
1 触发
触发器依靠在订购者的出版表上,当举行列队更新时,触发器用来捕捉订购者上履行的事件,然后将这些事件包在消息中并传送到行列中.
2 存储历程
在成立出版物时,若指定了列队更新选项,则在出版数据库中对出版表履行插入、删除、更新的存储历程将自动生成.行列阅读代理将调用存储历程在出版者上履行行列中的事件,并举行冲突检,测若有必要则产生一些增补号令,这些号令首先传给分发数据库,然后传送给订购者.除此之外,在出版者上仍要成立记录冲突信息,并将冲突信息传送给相关订购者的存储历程,假如检测到冲突,这些存储历程将由行列阅读代理调用.
3 行列
行列主要用来存储包含订购者事件的消息,订购者与分发者都有一个消息行列.在网络断开的情形下,包含订购者事件的消息首先存储在订购者消息行列,然后在网络接通时被传送到分发者消息行列.行列阅读代理读到这些消息并将消息中的事件利用到出版者.
4 行列阅读代理
行列阅读代理运行在分发者上多线程代理,其主要任务就是从消息行列中读失信息并将事件利用到出版者.
16.6.3 转换复制数据
????转换复制数据是SQL Server 2000 新增的功效.用可转换订购(Transformable subscriptions)来实现复制数据的转换.可转换订购主如果操纵数据转换服务(DTS)所供应的功效,如数据移动、传送映射、过滤等,从而可以按照每个订购者的具体要求来定制、发送复制数据.它可以在快照复制和事件复制中利用.比方,在以下情形下我们应当利用转换复制数据选项:
????按照每一订购者对出版数据举行列或水平分割
????在SQL Server 2000 从前的版本中,由于差别的订购者需求差别的数据(这里订购者所需求的数据是指表在垂直或水平分割后的某一部份),所以必须把数据分割成差别的数据块,从而在成立快照复制或事件复制时,也要辨别为每一个订购者成立差别的出版物.这给复制的管理和配置带来极大的不便,由此可增添系统的负担.但是在SQL Server 2000 中,可转换订购答应为同一出版物成立定制的数据分割(列或行分割),即同一出版物支持多个订购,从而满意差别订购者对出版数据的差别需求.
????成立数据转换,如数据范例匹配、列操作(如两列合成一列)、字符串操作、用户自定义函数等.
????利用可转换订购在出版者与订购者之间举行基本的、简单的数据转换和列操作主要包含以下几个方面:
????改变数据范例(除主键列外)
????重新命名某列
????从某列提取子字符串或向某列增添额外的字符
????对某列利用函数
????在成立出版物时设置该选项.完成该选项设置后,将成立一个复制DTS 包,订购者将把该DTS 包作为出版物的一部份.
????下面我们将介绍在Enterprise Manager 中若何成立可转换订购.
????首先,在成立出版物时要设置Transform Published Data 选项,在成立出版物的step6 (见16.3 快照复制图16-24),在Updatable Subscriptions 对话框中不选中任何选项,然后单击"下一步",会翻开Transform Published Data 对话框,如图16-55. 所示在该对话框中挑选Yes, transform the data. 然后完成出版物的成立.
????其次,在Enterprise Manager 成立可转换订购需求履行以下操作:
(1) 启动SQL Server Enterprise Manager, 登录到指定的服务器,顺次翻开 Replication、 Publication 文件夹.从中挑选设置了Transform Published Data 选项的出版物.
(2) 右击该出版物,在弹出菜单中挑选Define Transformation of Publication 选项,翻开Welcome to Transform Published Data 对话框,如图16-56 所示.(有关该向导的余下操作请参看数据转换服务DTS 一章).
最后,按照订购出版物的步骤向订购者推出出版物.
16.6.4 替换同步搭档(Alternate Synchronization Partners)
????替换同步搭档的功效利用归并复制的订购者不但可与成立订购的出版者举行数据同步,并且也可以与别的订购者服务器举行数据同步,即便主出版者不能持续利用.当利用交替同步搭档时,需求注意以下要求:
- 只有归并复制才可以利用该新特点;
- 替换同步搭档必须有订购所需求的数据和论文构造;
- 在替换同步搭档上的出版物最好是在原始出版者上所成立的出版物的克隆;
- 必须将出版物的属性定义为订购者可与别的出版者举行数据同步;
- 关于命名订购,必须保证该订购者也是替换同步搭档的订购者,这样订购者才能与别的出版者举行数据同步;
- 关于命名订购,替换同步搭档上自动增添与原始出版者上订购具有相同属性的新订购;
????过滤复制数据实质就是对出版表举行垂直、水平分割,在成立出版物时,我们需求肯定利用怎样的过滤战略.固然过渡复制数据与可转换订购都供应了对数据的分割功效,但二者仍存在一定的辨别,主要表目前:可转换订购是按照每一订购者对复制数据的需求,对同一出版物举行分割,从而成立差别的订购,此中仅触及到一个出版物;而过滤复制数据是在成立出版物时需求肯定的选项,其分割的对象是出版表.
过滤复制数据主要可以带来以下几个好处:
- 使通过网络传送的数据量最小化;
- 削减订购者所需求的存储空间;
- 按照每一个订购者具体的要求定制出版物;
- 由于分割后的差别的数据块复制到差别的订购者,从而避免或削减了冲突产生的大概性.
1 行过滤(Row Filter)
????利用行过滤就是把某些特定的行发送给订购者,排除那些用户没必要(或不该)看到的数据行,从而能为差别的订购者成立差别的出版物.同时,由于差别的订购者订购是来自同一表的差别数据行,因此有助于避免因多个订购者改正同一数据而招致的改正冲突.
????行过滤可在归并复制、快照复制和事件复制中利用,但是,在事件复制中由于针对版表的每一数据操作语句(INSERT、 DELETE、 UPDATA) 都要利用过滤条件语句来举行考证,以肯定能否打上"复制"标志,所以,利用行过滤会极大地增添系统负载.
2 列过滤(Column Filter)
????列过滤实质就是对表举行垂直分割.利用列过滤可以削减订购者需求的存储空间,削减向订购者传送数据改正的时间.但是有些列不能从出版物中过滤出去,它们是:有主键约束的列;
????没有缺省值的非空列;
????包含在惟一索引中的列;
????归并复制以及当即更新订购者的快照复制或事件复制中的ROWGUID 列.
3 动态过滤(Dynamic Filter)
????动态过滤是指在归并复制的处理历程中,按照从订购者那边得到的数据值对出版表举行数据过滤.在归并复制中利用动态过滤能带来以下好处:
????出版者上几近没必要存储出版物从而削减因管理多个出版物而带来的系统负载;
????在动态过滤中利用用户自定义的函数,这样按照订购者的属性来举行数据过滤,从而使订购者仅得到必要的信息.
4 结合过滤(Joint Filter)
????结合过滤答应在归并处理历程中定义两个出版表中的关系.它常与行过滤一同利用,并在归并处理中保持结合出版表之间的参照完好性.假如某一利用笔过滤的出版表被别的的出版表的外键所引用,那么,外键表的论文必必要有一个结合过滤器来代表其对主键表的依靠关系.
????结合过滤并不但限于主键/外键关系,事实上也可以针对任何两个差别的出版表的数据间的对比关系设置结合过滤
以上是“SQL Server数据库技术(108)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论