SQLSERVER的數(shù)據(jù)庫復(fù)制_第1頁
SQLSERVER的數(shù)據(jù)庫復(fù)制_第2頁
SQLSERVER的數(shù)據(jù)庫復(fù)制_第3頁
SQLSERVER的數(shù)據(jù)庫復(fù)制_第4頁
SQLSERVER的數(shù)據(jù)庫復(fù)制_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQL SERVER 的數(shù)據(jù)庫復(fù)制數(shù)據(jù)庫的復(fù)制是分布式數(shù)據(jù)庫應(yīng)用程序中常用的一種數(shù)據(jù)拷貝技術(shù),它將一個數(shù)據(jù)庫中的數(shù)據(jù)拷貝到通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或Internet網(wǎng)絡(luò)連接的不同站點或同一個服務(wù)器中的不同數(shù)據(jù)庫中,并能夠自動保持這些數(shù)據(jù)的同步,使各個拷貝具有相同的數(shù)據(jù)。一、SQL SERVER復(fù)制技術(shù)(一)、復(fù)制結(jié)構(gòu)SQL SERVR 數(shù)據(jù)復(fù)制基于“出版訂閱”模型,它由出版者、分發(fā)者和訂閱者三種服務(wù)器構(gòu)成。出版服務(wù)器標識其數(shù)據(jù)庫中的哪些數(shù)據(jù)用于復(fù)制,并檢測這些數(shù)據(jù)的變化和維護該站點中的所有出版信息。分發(fā)服務(wù)器中建立一個或多個分發(fā)數(shù)據(jù)庫,用來保存出版服務(wù)器的出版物,并向訂閱者傳遞它

2、們所訂閱的復(fù)制數(shù)據(jù)。訂閱服務(wù)器用于存儲復(fù)制數(shù)據(jù)和接收對復(fù)制數(shù)據(jù)的更改,SQL SERVE 7.0還允許修改訂閱服務(wù)器所接收到的出版物。出版服務(wù)器所出版數(shù)據(jù)的最小單位為條目,出版條目可以是數(shù)據(jù)庫中的表或存儲過程。SQL SERVER允許對所出版表添加縱向或橫向過濾器,從而使出版條目中只包含表中的某些列或其中的某些數(shù)據(jù)行,一組出版條目的集合構(gòu)成一個出版物。訂閱服務(wù)器對出版物的訂閱方式有推式訂閱和拉式訂閱兩種,SQL SERVER中的每個出版物均支持推式訂閱和拉式訂閱這兩種訂閱方式。所謂推式訂閱是指當出版物內(nèi)容被修改時,由出版服務(wù)器通知訂閱服務(wù)器,而不需要訂閱服務(wù)器進行查詢。推式訂閱的優(yōu)點是訂閱服務(wù)

3、器能夠及時了解出版數(shù)據(jù)的改變情況,但它相應(yīng)加重了出版服務(wù)器的負載。所以,推式訂閱適合于需要近乎實時要求的數(shù)據(jù)復(fù)制。拉式訂閱是指由訂閱服務(wù)器定期輪詢出版服務(wù)器中出版物的內(nèi)容是否改變,之后決定是否需要再次進行復(fù)制。拉式訂閱能夠減輕出版服務(wù)器的負擔,所以 常用于擁有大量訂閱者的數(shù)據(jù)復(fù)制領(lǐng)域。此外,拉訂閱也適合于移動用戶,因為移動用戶與出版服務(wù)器間沒有永久固定的通信連接,他們采用訂閱方式,只是在需要時才查詢出版物內(nèi)容的變化情況。(二)復(fù)制代理SQL Server 復(fù)制部件采用模塊化設(shè)計,各種復(fù)制操作通過不同的復(fù)制代理實現(xiàn)。SQL Server 中的復(fù)制代理包括:快照代理:快照代理運行在 SQL Ser

4、ver 代理服務(wù)環(huán)境下。其功能是:為復(fù)制準備表結(jié)構(gòu)、初始化出版表和存儲過程的數(shù)據(jù)文件、將出版物快照存儲到分發(fā)服務(wù)器的分發(fā)數(shù)據(jù)庫中、并記錄分發(fā)數(shù)據(jù)庫的同步狀態(tài)信息。每個出版物在分發(fā)服務(wù)器上均運行著自己的快照代理,并通過快照代理與出版服務(wù)器連接。日志閱讀代理:將用于復(fù)制的事務(wù)從出版服務(wù)器的事務(wù)日志中拷貝到分發(fā)數(shù)據(jù)庫。每一個使用事務(wù)復(fù)制出版的數(shù)據(jù)庫在分發(fā)服務(wù)器上均運行著自己的日志閱讀代理,并通過該代理與出版服務(wù)器連接:分發(fā)代理:將保存在分發(fā)數(shù)據(jù)庫中的事務(wù)或出版物快照傳遞到訂閱者。分發(fā)代理運行在 SQL Server 代理服務(wù)環(huán)境下,可以直接使用SQL 企業(yè)管理進行管理。對于快照復(fù)制和事務(wù)復(fù)制,如果在

5、配置推訂閱時采用立即同步(所謂同步是指維護出版服務(wù)器上的出版物和訂閱服務(wù)器上的復(fù)制品之間具有相同的表結(jié)構(gòu)和數(shù)據(jù))方式,那么每個出版服務(wù)上在分發(fā)服務(wù)器上啟動各自的分發(fā)代理,并由它實現(xiàn)與訂閱者間的連接;如果將推訂閱配置為非立即同步方式,那么所有的快照或事務(wù)出版物在分發(fā)服務(wù)器上共享一個分發(fā)代理,并由它實現(xiàn)與訂閱者間的連接。快照和事務(wù)出版物拉訂閱的分發(fā)代理則運行在訂閱服務(wù)器上,而不是在分發(fā)服務(wù)器上??煺諒?fù)制和事務(wù)復(fù)制沒有合并代理。(三)復(fù)制類型在分布式數(shù)據(jù)庫應(yīng)用環(huán)境中,不同的應(yīng)用領(lǐng)域?qū)?shù)據(jù)復(fù)制的要求各異,不可能有一種復(fù)制方法能夠適合所有領(lǐng)域中的應(yīng)用需要。為此,SQL Server提供了以下三種復(fù)制類型

6、來滿足不同環(huán)境中的應(yīng)用需要:快照復(fù)制:事務(wù)復(fù)制:合并復(fù)制:下面分別介紹三種復(fù)制的工作過程。1 快照復(fù)制快照復(fù)制是SQL Server中最簡單的一種復(fù)制方式,它拷貝數(shù)據(jù)庫中出版物在某一時刻的結(jié)構(gòu)和數(shù)據(jù)狀態(tài),即建立出版物快照,之后通過復(fù)代理將出版物快照復(fù)制給訂閱服務(wù)器??煺諒?fù)制操作由快照代理和分發(fā)代理實現(xiàn)。快照代理將出版物中各條目(表)結(jié)構(gòu)和數(shù)據(jù)拷貝到分發(fā)服務(wù)器的快照文件(但不是分發(fā)數(shù)據(jù)庫)中,并在分發(fā)服務(wù)器的分發(fā)數(shù)據(jù) 庫中記錄復(fù)制同步操作。分發(fā)服務(wù)器再根據(jù)分發(fā)數(shù)據(jù) 庫中的同步記錄將快照文件傳遞到訂閱服務(wù)器的目的數(shù)據(jù)庫中??煺沾淼木唧w工作過程為:快照代理建立從分發(fā)服務(wù)器到出版服務(wù)器的連接,并對出

7、版物中所包含的所有表(條目)設(shè)置共享鎖,以確保復(fù)制數(shù)據(jù)的一致性??煺沾碓俳某霭娣?wù)器的連接,并將各出版條目的結(jié)構(gòu)拷貝到分發(fā)服務(wù)器的.sch文件中(實際拷貝的是建立復(fù)制表的Transact-SQL語句),該文件存儲在分發(fā)數(shù)據(jù)庫文件目錄下的一個子目錄中??煺沾碓俳姆职l(fā)服務(wù)器到出版服務(wù)器的連接,并將歷史記錄和所有錯誤寫入分發(fā)數(shù)據(jù)庫中??煺沾韺⒊霭娣?wù)器上出版物中各條目的數(shù)據(jù)寫入分發(fā)服務(wù)器的數(shù)據(jù)文件中,該文件與出版物的結(jié)構(gòu)文件(*。sch) 存儲在同一目錄下。數(shù)據(jù)文件和結(jié)構(gòu)文件構(gòu)成一個表在某一服務(wù)器,出版條目的數(shù)據(jù)文件采用SQL Server本地批拷貝文件格式(*.bcp)存儲

8、,否則,數(shù)據(jù)文件按文件格式存儲。快照代理向分發(fā)數(shù)據(jù)庫的Msrepl_commands和Msrepl_transactions表中添加記錄,說明同步集合的存儲位置和訂閱服務(wù)器的同步任務(wù)命令。分發(fā)數(shù)據(jù)庫中Msrepl_transactions和Msrepl_commands的表結(jié)構(gòu)如表所示Msrepl_transactions和Msrepl_commands的表結(jié)構(gòu)表名列名數(shù)據(jù)類型說明Msrepl_transactionsPublisher_database_idInt出版數(shù)據(jù)庫標識Xact_idVarbinary(16)事務(wù)標識號Xact_seqnoVarbinary(16)事務(wù)序列號Entry

9、_timeDatetime事務(wù)進入分發(fā)數(shù)據(jù)庫的日期和時間Msrepl_transactionsPublisher_database_idInt出版數(shù)據(jù)庫標識號Xact_seqnoVarbinary(16)事務(wù)序列號TypeInt命令類型Article_idInt條目標識號Originator_idInt操作者標識號Command_idInt命令標識號Partial_commandBit說明該命令是否為部分命令CommandVarbinary(1024)命令數(shù)據(jù)快照代理解除對出版條目所設(shè)置的共享鎖??煺諒?fù)制過程中,分發(fā)代理的工作步驟為:(1) 分發(fā)代理建立從運行該代理的服務(wù)器至分發(fā)服務(wù)器之間的連

10、接。對于推訂閱和拉訂閱,分發(fā)代理分別運行在分發(fā)服務(wù)器和訂閱服務(wù)器上。(2) 分發(fā)代理從分發(fā)數(shù)據(jù)庫的Msrepl_commands表中讀取同步集合位置,從Msrepl_transactions表中讀取訂閱服務(wù)器的同步命令。(3) 分發(fā)代理將結(jié)構(gòu)文件和數(shù)據(jù)文件傳遞到訂閱服務(wù)器,并根據(jù)同步命令在訂閱服務(wù)器的目的數(shù)據(jù)庫重新建立與出版物中各個條目相同的數(shù)據(jù)表,從而使出版物中所有條目同時被同步,保持所有表間的事務(wù)完整性和參照完整性。在以上操作過程中,分發(fā)代理鎖定它所影響的整個表,因此這時所有其它進程不能對該表設(shè)置排它鎖。2 事務(wù)復(fù)制在出版大型數(shù)據(jù)庫時,如果采用快照復(fù)制方式,分發(fā)服務(wù)器為完成復(fù)制操作,必須在

11、每次出版物內(nèi)容變化時從出版服務(wù)器中拷貝表結(jié)構(gòu)及其中的大量數(shù)據(jù),之后再將它們傳遞給訂閱服務(wù)器,這大大加重了網(wǎng)絡(luò)的通信負擔。對于低速連接的網(wǎng)絡(luò)環(huán)境,采用快照復(fù)制將嚴重影響應(yīng)用程序的正常運行。為解決這一問題,SQL Server提供了事務(wù)復(fù)制方式。采用這種方式時,當訂閱服務(wù)器對出版服務(wù)器中的出版物做到初始同步后,SQL Server監(jiān)視INSERT、UUPDATE、DELETE等數(shù)據(jù)修改語句的執(zhí)行,并對影響出版物的事務(wù)進行標識。事務(wù)日志閱讀代理從事務(wù)日志中捕獲出版條目中數(shù)據(jù)的變化,并將引起這些變化的事務(wù)拷貝到分發(fā)服務(wù)器的分發(fā)數(shù)據(jù)庫中。之后,由分發(fā)服務(wù)器將這些事務(wù)傳遞給訂閱服務(wù)器,并在訂閱服務(wù)器上順序

12、執(zhí)行這些事務(wù),對復(fù)制品做增量修改,從而保證訂閱服務(wù)器中的復(fù)制品與出版 服務(wù)器出版物中的數(shù)據(jù)一致(但不是實時一致)。由于事務(wù)的數(shù)據(jù)量遠小于它所操作的數(shù)據(jù)量,所以采用事務(wù)復(fù)制方式能夠有效減輕網(wǎng)絡(luò)的通信負擔。事務(wù)復(fù)制由快照代理、事務(wù)日志閱讀代理和分發(fā)代理實現(xiàn)??煺沾韺⒊霭嫖镏懈鳁l目(表)的結(jié)構(gòu)和數(shù)據(jù)拷貝到分發(fā)服務(wù)器的快照文件中,并在分發(fā)服務(wù)器的分發(fā)數(shù)據(jù)庫中記錄復(fù)制同步操作,快照代理的這一工作過程與快照復(fù)制中基本相同。但在事務(wù)復(fù)制的初始同步階段,SQL Server允許用戶 在訂閱服務(wù)器上手工建立出版物的初始快照,這一操作被稱做手工同步。對于非常大的出版物,可選擇使用手工同步操作,這時用戶從磁帶或其

13、它設(shè)備中手工建立出版物快照,使SQL Server不再運行快照代理來同步復(fù)制操作,它認為出版服務(wù)器和訂閱服務(wù)器之間已經(jīng)同步,所以可以立即傳遞出版物的修改事務(wù)。日志閱讀代理運行時,它首先讀取出版物的事務(wù)日志,并標識出影響出版物的INSERT、UPDATA、DELETE語句或其它數(shù)據(jù)修改語句。之后,日志閱讀代理交這些被標識的事務(wù)批拷貝到分發(fā)服務(wù)器的分發(fā)數(shù)據(jù)庫中。分發(fā)數(shù)據(jù)庫作為這些事務(wù)的一個存儲轉(zhuǎn)發(fā)隊列,再將這些事務(wù)中已提交的事務(wù)傳遞給訂閱服務(wù)器。日志閱讀代理運行過程中使用系統(tǒng)存儲過程sp_replcmds讀取數(shù)據(jù)庫事務(wù)日志中的復(fù)制事務(wù)命令集合,使用sp_repldooe標識復(fù)制操作的完成程度。分發(fā)

14、代理通過推或拉方式將存儲在分發(fā)數(shù)據(jù)庫Msrepl_transactions表中的所有事務(wù)命令傳遞到訂閱服務(wù)器。之后訂閱服務(wù)器按照與出版服務(wù)器中相同的順序執(zhí)行這些事務(wù)命令,實現(xiàn)對出版物復(fù)制品的修改操作。3 合并復(fù)制合并復(fù)制允許修改出版服務(wù)器中的出版數(shù)據(jù)庫和訂閱服務(wù)器中的訂閱數(shù)據(jù)庫,它能夠自動監(jiān)視這些數(shù)據(jù)庫中的數(shù)據(jù)變化,并定期將這些修改操作進行合并,把合并后的結(jié)果提交給建立訂閱時為訂閱者所設(shè)置的優(yōu)先級載決哪個用戶的修改有效。當建立一個合并復(fù)制時,SQL Server對數(shù)據(jù)庫結(jié)構(gòu)做以下修改: 對出版表標識行唯一列,這使SQL Server能夠在一個表的多個拷貝之間根據(jù)被標識列唯一確定各個數(shù)據(jù)行。具體

15、的標識方法是:如果出版條目中具有ROWGUIDCOL屬性的uniqueidentifier數(shù)據(jù)類型列時,SQL Server自動使用該列作為行標識符。否則,SQL Server在為出版物第一次執(zhí)行快照代理或創(chuàng)建出版物條目時向出版表中添加一列rowguid,并對rowguid列建立索引,rowguid列具有ROWGUIDCOL屬性。由于合并出版一個表之前應(yīng)刪除其中的timestamp列。 建立出版條目的數(shù)據(jù)修改跟蹤觸發(fā)器。在為合并復(fù)制第一次執(zhí)行快照代理或創(chuàng)建出版物條目時,SQL Server建立合并復(fù)制觸發(fā)器。這些觸發(fā)器自動跟蹤出版條目中行級或列級數(shù)據(jù)修改操作,并將所監(jiān)測到的數(shù)據(jù)修改操作記錄到合

16、并復(fù)制系統(tǒng)表中。由于SQL Server7。0允許對一個表建立多個同類型的觸發(fā)器(在SQL Server6。5及其以前版本中,只允許為表建立一個同類觸發(fā)器),所以,合并復(fù)制觸發(fā)器不影響表中已經(jīng)建立的觸發(fā)器,二者可以共享。 向數(shù)據(jù)庫中添加復(fù)制系統(tǒng)表,這些表用于數(shù)據(jù)跟蹤、同步以及沖突檢測、載決和報告等。系統(tǒng)表Msmerge_contents和Msmerge_tombstone用于跟蹤出版物中的數(shù)據(jù)插入、修改和刪除操作,其中的行標識符列rowguid連接各個基表,generation列用做邏輯時鐘,它標識指定站點中該數(shù)據(jù)行是否被修改。Generation列值說明合并代理或?qū)?yīng)站點的用戶對該行數(shù)據(jù)修改

17、的先后順序。 合并復(fù)制由快照代理和合并代理實現(xiàn)。在訂閱服務(wù)器能夠接收出版服務(wù)器的增量修改數(shù)據(jù)之前,它必須建立與出版物中各條目相同的結(jié)構(gòu)和數(shù)據(jù)文件,即出版物的初始快照。初始快照可以通過快照代理建立,也可以由用戶手工建立,即所謂的手工同步方式。使用快照代理建立初始快照的過程與事務(wù)復(fù)制中快照代理的工作過程基本相同,這里不再介紹: 當用戶修改合并條目時,合并代理觸發(fā)器將被修改行的generation列值置為0。之后當合并代理運行時,它查找表中所有g(shù)eneration列值為0的數(shù)據(jù)行,并將這些行的generation列值設(shè)置為一個比所有其它行的generation列值較高的值。每個站點中的合并代理通過跟

18、蹤它傳遞給其它站點的最高generation列值和其它站點傳遞給它的最高generation列值,即可判斷出版物中的各個條目是否被修改。在同步階段,合并代理將所有修改數(shù)據(jù)傳遞給其它站點。這些站點接收到修改數(shù)據(jù)后,合并代理首先檢查這些行與表中舊數(shù)據(jù)行是否存在沖突。如果存在沖突,合并代理將根據(jù)各訂閱者的優(yōu)先給自動處理沖突,載決哪個用戶的修改操作有效。(四)立即修改訂閱立即修改訂閱(Immediate Updating Subscribers)是SQL Server快照復(fù)制和事務(wù)復(fù)制中的一個復(fù)制選項,它允許訂閱服務(wù)器對復(fù)制進行修改,被修改的數(shù)據(jù)或事務(wù)通過兩階段提交協(xié)議(2PC)傳遞給出版服務(wù)器,出版

19、服務(wù)器提交后再將被修改數(shù)據(jù)傳遞給該出版物的其它訂閱服務(wù)器之間有可靠的網(wǎng)絡(luò)連接,能夠保證二者間的正常通信,使分布式事務(wù)在兩個服務(wù)器能夠順利進行。但它不要求其它訂閱服務(wù)器與出版服務(wù)器之間的固定連接,它們之間可以只在數(shù)據(jù)同步期間建立連接。SQL Server支持立即修改訂閱操作時用到以下部件:MS DTC:處理訂閱服務(wù)器和出版器之間的分布事務(wù),實現(xiàn)二者之間的兩階段提交操作。觸發(fā)器:當分發(fā)代理在訂閱服務(wù)上建立初始快照時創(chuàng)建該觸發(fā)器,它捕獲數(shù)據(jù)修改事務(wù),并在MS DTC 的控制下將所捕獲到的事務(wù)提交給出版服務(wù)器。在創(chuàng)建該觸發(fā)器的CREATE TRIGGER語句中使用NOT FOR RELPICATION

20、選項,因此,分發(fā)代理對訂閱服務(wù)器中數(shù)據(jù)庫所做的修改操作不會激活觸發(fā)器; 存儲過程:當出版服務(wù)器檢測到訂閱服務(wù)器對它所訂閱出版物的修改與出版服務(wù)器中的數(shù)據(jù)沒有沖突時,位于出版服務(wù)器上的存儲過程(包括插入存儲過程、修改存儲過程和刪除存儲過程等)實現(xiàn)對出版條目的插入、修改或刪除操作,這些操作與訂閱服務(wù)器所做的修改相同:沖突檢測:出版服務(wù)器使用以下兩種方法檢測訂閱服務(wù)器所提交的事務(wù)是否存在沖突: 時間戳沖突檢測法:采用這種方法時,要求出版表中具有時間戳列,SQL Server根據(jù)該列判斷一數(shù)據(jù)行在復(fù)制到訂閱服務(wù)器之后是否被修改過。具體檢測方法是:當訂閱服務(wù)器請求一個立即修改事務(wù)時,它將被修改行的時間戳

21、列值相比較,如果二者相同,則說明該行數(shù)據(jù)復(fù)制之后沒有被修改。因此,出版服務(wù)器可以接受訂閱服務(wù)器所請求的修改事務(wù)。否則,說明訂閱服務(wù)器所請求的修改事務(wù)與其它修改操作存在沖突,出版服務(wù)器拒絕訂閱服務(wù)器的請求,并在兩個服務(wù)器上回滾事務(wù)操作。當出版數(shù)據(jù)庫和訂閱數(shù)據(jù)庫位于同一臺服務(wù)器上時,不能使用時間戳沖突檢測法檢測沖突。 行比較沖突檢測法:如果出版條目中沒有時間戳列,SQL Server則將訂閱服務(wù)器中所有列修改前的數(shù)值(由觸發(fā)器從訂閱服務(wù)器的deleted表中提?。┡c出版服務(wù)器中被修改行的有列的當前值進行比較,如果二者值相同,則說明沒有沖突,否則存在沖突。(五)存儲過程復(fù)制除復(fù)制表外,SQL Ser

22、ver還允許單向或雙向復(fù)制存儲過程。如果存儲過程作為快照出版物中的條目時,SQL Server將整個存儲過程從出版服務(wù)器復(fù)制到訂閱服務(wù)器。但是,如果存儲過程作為事務(wù)出版物中的條目的,SQL Server將向訂閱服務(wù)器復(fù)制存儲過程的執(zhí)行,而不是存儲過程執(zhí)行過程中所產(chǎn)生的數(shù)據(jù)處理事務(wù)。這時,如果在出版服務(wù)器上執(zhí)行被出版的存儲過程,該存儲過程的執(zhí)行及其執(zhí)行參數(shù)被傳遞到每個訂閱服務(wù)器。與出版表相比,在事務(wù)復(fù)制過程中出版存儲過程可以減少網(wǎng)絡(luò)的通信量。在事務(wù)復(fù)制時,SQL Server自動標識對出版條目中的所有數(shù)據(jù)處理事務(wù)。為避免重復(fù)標識,在被出版存儲過程執(zhí)行期間,SQL Server暫停對復(fù)制事務(wù)和命令

23、的標識。存儲過程復(fù)制時應(yīng)該注意:如果對出版基表施加有橫向過濾器,即訂閱服務(wù)器的復(fù)制品中只是出版服務(wù)器數(shù)據(jù)表中的部分數(shù)據(jù)行時,被復(fù)制存儲過程在出版服務(wù)器和訂閱服務(wù)上執(zhí)行所產(chǎn)生的結(jié)果是不同的。二、使用管理工具實現(xiàn)復(fù)制操作SQL Server提供了兩種數(shù)據(jù)復(fù)制實現(xiàn)方法:一種是使用Transact_SQL語句和系統(tǒng)存儲過程實現(xiàn)數(shù)據(jù)復(fù)制;另一種方法是作用圖形化管理工具SQL Server企業(yè)管理器/SQL Server7.0。由于第一種方法實現(xiàn)起來比較復(fù)雜,而且需要對于SQL的語句特別熟練,用戶掌握起來有一定的難度,所以我們這里就不再做介紹了,只介紹第二種比較簡單直接的方法來實現(xiàn)數(shù)據(jù)庫的復(fù)制,即利用圖形

24、將數(shù)據(jù)復(fù)制管理工具管理工具SQL Server企業(yè)管理器來實現(xiàn)。使用QL Server企業(yè)管理器集成到企業(yè)管理器中,使用它可以完成以下操作:配置出版服務(wù)器、分發(fā)服務(wù)器和訂閱服務(wù)器;創(chuàng)建和管理出版物及出版條目 ;建立推、拉訂閱;停止服務(wù)器的出版、分發(fā)和訂閱操作;刪除出版物和訂閱;產(chǎn)生復(fù)制腳本程序文件。這一節(jié)以建立pubs數(shù)據(jù)庫的快照出版物及其拉訂閱為例介紹怎么使用SQL Server復(fù)制管理工具實現(xiàn)數(shù)據(jù)復(fù)制操作。(一) 配置分發(fā)服務(wù)器和出版服務(wù)器SQL Server企業(yè)管理器中配置分發(fā)服務(wù)器和出版服務(wù)器的具體操作步驟為: 在SQL Server企業(yè)管理器中,選擇需要配置 的SQL Server服

25、務(wù)器,從 Tools菜單中選擇Replication-Configure Publishing and Subscribers命令,打開Configure Publishing and Distrbution Wizard 對話框,如圖所示 單擊圖中的NEXT按鈕,打開圖中所示的對話框,進入配置工作的第二步:設(shè)置分發(fā)服務(wù)器。如果出版服務(wù)器和分發(fā)服務(wù)器為同一臺主機,則選擇圖中的第一個列表選項,否則選擇其中的第二項。選擇第二項時,SQL Server要求所指定的分發(fā)服務(wù)器在本地SQL Server企業(yè)管理器進行注冊。如果所指定的分發(fā)服務(wù)器還沁有在本地SQL Server企業(yè)管理器中注冊,這時可單擊

26、Register Server按鈕,打開服務(wù)器注冊對話框,注冊一個新的服務(wù)器。之后,單擊Next按鈕,進入配置工作的第三步。 在圖中,選擇是否使用配置向?qū)Ыo出的默認設(shè)置。這里我們選擇使用其默認設(shè)置,即:使用WEBSERVER服務(wù)器作為分發(fā)服務(wù)器;允許當前服務(wù)器中已注冊的服務(wù)器(WEBSERVER、DBSERVER等)作為訂閱服務(wù)器訂閱WEBSERVER服務(wù)器中的出版物;使用distribution數(shù)據(jù)庫作為分發(fā)數(shù)據(jù)庫,該數(shù)據(jù)庫存儲在C:MSSQL7data目錄下:允許出版服務(wù)器WEBSERVER使用該分發(fā)服務(wù)器出版數(shù)據(jù)。如果不使用以上默認設(shè)置,可選擇圖中的第一個列表選項,然后,在配置向?qū)У囊龑?dǎo)

27、下設(shè)置以上各項配置。單擊圖中的Next按鈕,打開圖中所示的對話框,進入配置工作的最后一步。這時單擊其中的Finish按鈕,SQL Server即開始自動配置出版、分發(fā)和訂閱服務(wù)器。它所完成的工作包括: 在指定路徑下創(chuàng)建分發(fā)數(shù)據(jù)庫及其日志文件;將指定的服務(wù)器配置為分發(fā)服務(wù)器;啟動出版服務(wù)器的數(shù)據(jù)庫出版功能;啟動訂閱服務(wù)器的訂閱功能;啟動出版服務(wù)器中指定數(shù)據(jù)庫的數(shù)據(jù)出版功能。在SQL Server企業(yè)管理器中,選擇需要配置的服務(wù)器,從Tools菜單中選擇Replication-Configure Publishing, Subscribers, and Distribution命令,打開Publi

28、sher and Distributor Properties對話框,如圖所示。Publisher and Distributor Properties對話框用于設(shè)置出版、分發(fā)和訂閱服務(wù)器及其屬性,標識出版數(shù)據(jù)庫。這里只介紹怎樣標識出版數(shù)據(jù)庫。(見下圖一)選擇Publisher and Distributor Properties對話框的Publication Databases選項卡,如圖所示。在其Databases列表框中列出了服務(wù)器上可用于出版的所有用戶數(shù)據(jù)庫(SQL Server系統(tǒng)數(shù)據(jù)庫禁止出版),我們選中pubs數(shù)據(jù)庫前的Trans和Merge復(fù)選框,即說明允許以事務(wù)和合并方式出版

29、pubs數(shù)據(jù)庫中的數(shù)據(jù)。(見下圖二)最后單擊OK按鈕,親閉Publisher and Distributor Properties對話框。至此,分發(fā)服務(wù)器出版服務(wù)器、訂閱服務(wù)器和出版數(shù)據(jù)庫、分發(fā)數(shù)據(jù)庫的設(shè)置和創(chuàng)建工作已經(jīng)完成。(圖一)(圖二)(二)創(chuàng)建出版物在SQL Server企業(yè)管理器中使用Create Publication Wizard創(chuàng)建出版物,并向出版物中添加出版條目,這一操作步驟為:(1) 在SQL Server企業(yè)管理中,首先選擇出版服務(wù)器,然后從Tools 菜單中選擇Replication-Create and Manage Publications命令,打開Create a

30、nd Manage Publications對話框,如下圖所示 (2) 從Create and Manage Publications對話框的Databases and Publications列表框中選擇出版數(shù)據(jù)庫,如pubs。然后單擊Create Publication按鈕,打開Create Publication Wizard(如圖所示),之后在它的引導(dǎo)下完成出版物的創(chuàng)建和出版條目的定義操作。(3)單擊上圖中的Next按鈕,進入創(chuàng)建出版物操作的第二步。在下圖中,選擇出版類型:快照出版、事務(wù)出版或合并出版。這里我們選擇第二項,即事務(wù)出版,然后單擊Next按鈕,進入下一步。(4)在圖中,設(shè)置

31、所建立出版物的立即修改訂閱選項,這里我們不允許創(chuàng)建對新建立出版物的立即修改訂閱,所以選擇下圖中的第二項,即No, do not allow immediate-updating subscribtions,之后再單擊圖中的Next按鈕,進入下一步。(5)在下圖中指定訂閱服務(wù)器的類型。出版物的訂閱服務(wù)器類型影響出版數(shù)據(jù)文件的格式,如果所有訂閱服務(wù)器均為SQL Server服務(wù)器,出版數(shù)據(jù)文件使用SQL Server本地批拷貝格式,否則它使用字符批拷貝格式。這里選擇第一項,即所有訂閱服務(wù)器均為SQL Server數(shù)據(jù)庫服務(wù)器。之后再單擊圖中的Next按鈕,進入下一步。(6)在下圖中為新創(chuàng)建的出版物

32、添加出版條目。首先,從Filter list to show列表中選擇Both publicshed and unpublished objects選項,從Objects in list列表中選擇Include tables 和Include stored procs選項,使Create Publication Wizard列出出版數(shù)據(jù)庫中所有已出版和未出版的表和存儲過程。然后從數(shù)據(jù)庫對象列表中選擇待出版的表和存儲過程。這里,我們選擇出版authors表。然后單擊圖中的Next按鈕,進入下一步。(見下圖三)(7)在下圖的Publication name和Publication descript

33、ion文本框中分別輸入新建立的出版物名稱及其描述文本,然后單擊Next按鈕,進入下一步。(見下圖四)(8)在下圖中,選擇是否需要對所添加的出版條目施加橫向過濾或縱向過濾,以及設(shè)置是否允許用戶建立該出版物的匿名訂閱等。如果需要設(shè)置出版物的這些屬性,選擇圖中的第一項,否則選擇第二項。這里我們選擇第二項,該項包含的設(shè)置包括:(見下圖五)創(chuàng)建pubs數(shù)據(jù)庫的事務(wù)出版物tran_pubs;所有訂閱服務(wù)器均為Microsoft SQL Servers服務(wù)器;出版authors表,其出版條目名稱仍為authors;對tuan_pubs出版物的數(shù)據(jù)不加過濾;不允許對該出版物建立立即修改訂閱;不允許匿名服務(wù)器創(chuàng)

34、建該出版物的拉訂閱;在1999年2月8日之前,快照代理在每天的11:30PM啟動一次然后,單擊Next按鈕,進入下一步。(圖三)(圖四)(圖五)(9)最后單擊圖中對話框中的finish按鈕,使SQL Server開始按照以上設(shè)置創(chuàng)建出版物。三、生成復(fù)制腳本程序數(shù)據(jù)復(fù)制管理工具只是為用戶提供一種圖形化的交互操作接口,其各項功能最終仍是通過執(zhí)行TransactSQL語句和系統(tǒng)存儲過程來實現(xiàn)。SQL Server數(shù)據(jù)庫復(fù)制管理工具為用戶提供了腳本程序生成接口,該接口將用戶的所有設(shè)置工作轉(zhuǎn)化為TransactSQL腳本程序文件。下面我們使用這一工具生成本節(jié)中配置服務(wù)器和出版物等操作的腳本程序。在SQL

35、 Server企業(yè)管理器中,用鼠標右鍵單擊服務(wù)器,從Tools菜單中選擇ReplicationGenerate Replication Scripts命令,打開Generate Replication Scripts對話框,如圖所示:首先選中上面圖中的兩個復(fù)選框,即要求生成的腳本程序中包含分發(fā)服務(wù)器屬性設(shè)置和指定數(shù)據(jù)庫中的出版物定義語句。然后,選擇Script the commands to組中的第一個選項,要求生成指定不部件的創(chuàng)建腳本。如果需要生成指定部件的刪除腳本,則選擇其中的第二項。最后,單擊“OK”按鈕,SQL Server將打開Script File Location對話框,請用戶輸

36、入程序腳本的名稱以及它的存儲路徑,并按照指定的參數(shù)保存它所產(chǎn)生的程序腳本文件。以下內(nèi)容為管理工具所產(chǎn)生的腳本程序文件內(nèi)容,大家可以對照自己掌握的SQL語句的命令來大致的理解一下:/* Scripting the replication setup of server S10. Script Date: 00-10-6 19:11:51 */* Installing the server S10 as a Distributor. Script Date: 00-10-6 19:11:53 */use masterGOexec sp_adddistributor distributor = N&

37、#39;S10', password = N''GO- Adding the distribution databaseexec sp_adddistributiondb database = N'distribution', data_folder = N'd:MSSQL7data', data_file = N'distribution.MDF', data_file_size = 3, log_folder = N'd:MSSQL7data', log_file = N'distributio

38、n.LDF', log_file_size = 0,min_distretention = 0, max_distretention = 72, history_retention = 48,security_mode = 0, login = N'sa', password = N''GO- Adding the distribution publisherexec sp_adddistpublisher publisher = N'S10', distribution_db = N'distribution', sec

39、urity_mode = 0,login = N'sa', password = N'',working_directory = N'd:MSSQL7ReplData', trusted = N'false', thirdparty_flag = 0GO- Adding the registered subscriberexec sp_addsubscriber subscriber = N'S10', type = 0, login = N'sa', password = N'',

40、 security_mode = 0, frequency_type = 64, frequency_interval = 1, frequency_relative_interval = 2, frequency_recurrence_factor = 0, frequency_subday = 8, frequency_subday_interval = 1, active_start_date = 0, active_end_date = 0, active_start_time_of_day = 0, active_end_time_of_day = 235900, descripti

41、on = N''exec sp_changesubscriber_schedule subscriber = N'S10', agent_type = 1, active_end_date = 0GO- Adding the registered subscriberexec sp_addsubscriber subscriber = N'WANGQW', type = 0, login = N'sa', password = N'', security_mode = 0, frequency_type = 64,

42、 frequency_interval = 1, frequency_relative_interval = 2, frequency_recurrence_factor = 0, frequency_subday = 8, frequency_subday_interval = 1, active_start_date = 0, active_end_date = 0, active_start_time_of_day = 0, active_end_time_of_day = 235900, description = N''exec sp_changesubscriber

43、_schedule subscriber = N'WANGQW', agent_type = 1, active_end_date = 0GO- Enabling the replication databaseuse masterGOexec sp_replicationdboption N'fff', N'publish', N'true'GOuse fffGO- Adding the transactional publicationexec sp_addpublication publication = N'fff

44、', restricted = N'false', sync_method = N'native', repl_freq = N'snapshot', description = N'Snapshot publication of fff database from Publisher S10.', status = N'active', allow_push = N'true', allow_pull = N'true', allow_anonymous = N'false', enabled_for_internet = N'false', independent_agent = N'false', immediate_sync = N'false', allow_sync_tran = N'false', autogen_sync_procs = N'fa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論