資源描述:
《ms sql入門基礎-復制選項的規(guī)劃--》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、MSSQL入門基礎:復制選項的規(guī)劃>> SQLServer2000提供了比以前版本更多的復制選項,其中包括立即更新訂購者,排隊更新,以排隊更新作為熱備份的立即更新,傳遞復制數(shù)據(jù),過濾出版數(shù)據(jù)等。其中前三個選項表示可在訂購者處對復制數(shù)據(jù)進行修改,然后將修改以相應的方式反映到出版者那里。如果在復制中使用這些復制選項,將使復制的配置和管理更為困難,所以很有必要對這些復制選項有著更為清晰的認識和了解。 16.6.1立即更新訂購者 所謂立即更新訂購者是指在復制時使用了立即更新選項。通常而言,快照復制
2、和事務復制都是單向數(shù)據(jù)復制即數(shù)據(jù)從出版者的源數(shù)據(jù)庫復制到訂購者的目標數(shù)據(jù)庫。但是SQLServer通過允許訂購者來修改復制數(shù)據(jù)而增強了這種模式的功能。立即更新訂購者選項允許既可以在出版者也可以在訂購者處對復制數(shù)據(jù)進行修改。立即更新是指對復制數(shù)據(jù)進行修改的訂購者與出版者之間保持數(shù)據(jù)的立即更新,即立即將訂購者的修改反映到出版者那里。并且提供了對其它訂購者而言的潛在事務一致性,即訂購者的修改在立即反映到出版者那里之后,允許這一修改不必馬上同步到其它訂購者那里。在創(chuàng)建出版物時對該選項進行設置?! 搹?/p>
3、調(diào)的是,在對數(shù)據(jù)進行修改的訂購者與出版者之間使用了兩階段提交協(xié)議,從而要求當訂購者對數(shù)據(jù)的修改在出版者那里被成功提交之后,這一修改才會在該訂購者處被提交。如果提交成功,然后出版者才會在分發(fā)代理執(zhí)行時(如果是快照復制,則也可以是在快照被刷新時),把這種修改分發(fā)到其它的訂購者那里?! ∨c完全的兩階段提交協(xié)議相比,立即更新訂購者選項降低了復制的復雜性以及事務提交失敗的可能性。因為完全的兩階段協(xié)議要求所有參與事務的服務器之間必須有可靠的網(wǎng)絡連接,并且對數(shù)據(jù)的修改只有在所有的參與者中都被成功提交才會生效但
4、當設置立即更新訂購者選項時,由于僅在對復制數(shù)據(jù)進行修改的訂購者與出版者之間使用了二階段提交協(xié)議,所以事務的完整性仍得到很好的維護,而在出版者和其它訂購者之間并不使用二階段提交協(xié)議,這樣便取消了所有參與者必須保持數(shù)據(jù)同步的復雜性?! ∽⒁猓汉喜椭撇辉试S使用立即更新訂購者選項?! ≡赟QLServer2000中,若設置了立即更新訂購者選項則,需要以下組件的支持; 觸發(fā)器 存儲過程 Microsoft的分布式事務協(xié)調(diào)器MSDTC 沖突檢測 環(huán)路檢測 1觸發(fā)器 觸發(fā)器位于訂購者,被用來捕
5、捉在訂購者上發(fā)生的事務并利用遠程過程調(diào)用將事務提交給出版者。由于使用二階段提交協(xié)議,從而保證事務在出版者被成功提交后才會在訂購者那里提交,如果提交失敗,則訂購者事務將回滾,從而使訂購者數(shù)據(jù)庫與出版者數(shù)據(jù)庫仍能保持同步。 2存儲過程 存儲過程位于出版者上,如果自訂購者上次接收復制數(shù)據(jù)以來,出版者數(shù)據(jù)庫發(fā)生的變化與訂購者提交的事務不發(fā)生沖突,才允許在出版者提交這些來自訂購者的事務。若有沖突發(fā)生,則拒絕事務提交,兩處的事務都將回滾。每篇論文都有為INSERT、DELETE、UPDATE事務創(chuàng)建的存
6、儲過程?! ?Microsoft的分布式事務協(xié)調(diào)器(MSDTC) 在觸發(fā)器使用存儲過程將訂購者事務提交給出版者時,需要Microsoft的分布式事務協(xié)調(diào)器(MSDTC)來管理出版者與訂購者之間的兩階段提交。遠程存儲過程使用BEGINDISTRIBUTEDTRANSACTION來對MSDTC進行初始化操作?! ?沖突檢測 出版數(shù)據(jù)庫中的存儲過程使用時間戳來進行檢測,以確定某列被復制到訂購者之后是否又被修改。當訂購者提交立即更新事務時,它會把某行的所有列(包括時間戳列)送回到出版者,出版者利用存
7、儲過程將該行當前(屬于出版者數(shù)據(jù)庫)的時間戳值與從訂購者送回的時間戳值進行比較,如果相同,表明在復制給訂購者之后沒有發(fā)生修改,則接收事務(用從訂購者送回的行值來修改該行的當前值)?! ?環(huán)路檢測 環(huán)路檢測主要是基于以下考慮而被提出的,即如果訂購者的立即更新事務在出版者和訂購者都被成功提交后,出版者要在以后的某一時刻將該事務復制到其它訂購者,但是由于提交立即更新事務的訂購者已成功提交了該事務,因此也就沒有必要再將此事務從出版者那里復制給該訂購者。如何解決該問題呢?環(huán)路檢測就是用來確定一事務是否已
8、在某訂購者服務器處被成功提交,從而避免該事務又一次應用于訂購者服務器,最終因破壞了完整性約束(如向同一表中插入同一行)導致復制中止。 16.6.2排隊更新訂購者 排隊更新選項是SQLServer2000的新增功能。與立即更新訂購者一樣,排隊更新允許快照復制或事務復制的訂購者對復制數(shù)據(jù)的修改,然后將修改反映到出版者那里。但不同的是,排隊更新并不要求訂購者與出版者之間的網(wǎng)絡連接一直處于激活狀態(tài)。 通常在創(chuàng)建出版物時對該復制選項進行設置,如果使用了排隊更新選項,那么訂購者對復制數(shù)據(jù)的修改是保存在