SQL Server 2005相對于SQL Server 2000來說,無論是性能還是功能都有一個相當大的提高,甚至可以用“革命”來形容這一次升級。SQL Server 2005使 SQL Server 躋身于企業(yè)級數(shù)據(jù)庫行列。在數(shù)據(jù)高可用性方面,SQL Server 2005為用戶提供了數(shù)據(jù)鏡像、復(fù)制、故障轉(zhuǎn)移群集、日志傳送功能。本文向讀者簡單介紹SQL Server 2005復(fù)制功能。
一、復(fù)制簡介
復(fù)制是將數(shù)據(jù)或數(shù)據(jù)庫對象從一個數(shù)據(jù)庫復(fù)制和分發(fā)到另外一個數(shù)據(jù)庫,并進行數(shù)據(jù)同步,從而使源數(shù)據(jù)庫和目標數(shù)據(jù)庫保持一致。使用復(fù)制,可以在局域網(wǎng)和廣域網(wǎng)、撥號連接、無線連接和 Internet 上將數(shù)據(jù)分發(fā)到不同位置以及分發(fā)給遠程或移動用戶。
SQL Server 2005 x86 x64 集合中文版下載:http://elephantinaurance.com/soft/10907.html
一組SQL SERVER2005復(fù)制有發(fā)布服務(wù)器、分發(fā)服務(wù)器、訂閱服服務(wù)器(圖1 復(fù)制服務(wù)器之間的關(guān)系圖)組成,他們之間的關(guān)系類似于書報行業(yè)的報社或出版社、郵局或書店、讀者之間的關(guān)系。以報紙發(fā)行為例說明,發(fā)布服務(wù)器類似于報社,報社提供報刊的內(nèi)容并印刷,是數(shù)據(jù)源;分發(fā)服務(wù)器相當于郵局,他將各報社的報刊送(分發(fā))到訂戶手中;訂閱服務(wù)器相當于訂戶,從郵局那里收到報刊。在實際的復(fù)制中,發(fā)布服務(wù)器是一種數(shù)據(jù)庫實例,它通過復(fù)制向其他位置提供數(shù)據(jù),分發(fā)服務(wù)器也是一種數(shù)據(jù)庫實例,它起著存儲區(qū)的作用,用于復(fù)制與一個或多個發(fā)布服務(wù)器相關(guān)聯(lián)的特定數(shù)據(jù)。每個發(fā)布服務(wù)器都與分發(fā)服務(wù)器上的單個數(shù)據(jù)庫(稱作分發(fā)數(shù)據(jù)庫)相關(guān)聯(lián)。分發(fā)數(shù)據(jù)庫存儲復(fù)制狀態(tài)數(shù)據(jù)和有關(guān)發(fā)布的元數(shù)據(jù),并且在某些情況下為從發(fā)布服務(wù)器向訂閱服務(wù)器移動的數(shù)據(jù)起著排隊的作用。在很多情況下,一個數(shù)據(jù)庫服務(wù)器實例充當發(fā)布服務(wù)器和分發(fā)服務(wù)器兩個角色。這稱為“本地分發(fā)服務(wù)器”。訂閱服務(wù)器是接收復(fù)制數(shù)據(jù)的數(shù)據(jù)庫實例。一個訂閱服務(wù)器可以從多個發(fā)布服務(wù)器和發(fā)布接收數(shù)據(jù)。
(圖1)
復(fù)制有三種類:事務(wù)復(fù)制、快照復(fù)制、合并復(fù)制。事務(wù)復(fù)制是將復(fù)制啟用后的所有發(fā)布服務(wù)器上發(fā)布的內(nèi)容在修改時傳給訂閱服務(wù)器,數(shù)據(jù)更改將按照其在發(fā)布服務(wù)器上發(fā)生的順序和事務(wù)邊界,應(yīng)用于訂閱服務(wù)器,在發(fā)布內(nèi)部可以保證事務(wù)的一致性。快照復(fù)制將數(shù)據(jù)以特定時刻的瞬時狀態(tài)分發(fā),而不監(jiān)視對數(shù)據(jù)的更新。發(fā)生同步時,將生成完整的快照并將其發(fā)送到訂閱服務(wù)器。合并復(fù)制通常是從發(fā)布數(shù)據(jù)庫對象和數(shù)據(jù)的快照開始,并且用觸發(fā)器跟蹤在發(fā)布服務(wù)器和訂閱服務(wù)器上所做的后續(xù)數(shù)據(jù)更改和架構(gòu)修改。訂閱服務(wù)器在連接到網(wǎng)絡(luò)時將與發(fā)布服務(wù)器進行同步,并交換自上次同步以來發(fā)布服務(wù)器和訂閱服務(wù)器之間發(fā)生更改的所有行。
二、復(fù)制實例
這里以配置一個事務(wù)復(fù)制來說明復(fù)制配置過程 。
試驗在同一臺機器的二個實例間進行,實例名分別是SERVER01、SERVER02 。將SERVER01配置發(fā)布服務(wù)器和分發(fā)服務(wù)器(也就是前面提到的“本地分發(fā)服務(wù)器”),SERVER02配置為訂閱服務(wù)器。在本例中將SERVER01中一個DBCoper庫中person表作為發(fā)布的數(shù)據(jù),在發(fā)布前請確保person表有主鍵、SQL SERVER 代理自動啟動、發(fā)布數(shù)據(jù)庫是日志是完整模式。
第一步:完全備份SERVER01 DBCopy數(shù)據(jù)庫,在SERVER02上恢復(fù)DBCopy數(shù)據(jù)庫(復(fù)制前的同步,使用發(fā)布的源和目標數(shù)據(jù)一致)
第二步:在SERVER01上設(shè)置發(fā)布和分發(fā)A 在SERVER01的復(fù)制節(jié)點—>本地發(fā)布右鍵選擇新建訂閱(圖2)
(圖2)
B B 在新建發(fā)布向?qū)е惺紫纫筮x擇分發(fā)服務(wù)器,本例選擇本機作為分發(fā)服務(wù)器,選擇默認值。(圖3)
(圖3)
C 向?qū)У谌揭筮x擇快照的路徑,一般情況下選擇默認路徑
D 向?qū)У谒牟竭x擇發(fā)布的數(shù)據(jù)庫(如圖四),選擇DBCopy
(圖4)
E 接著選擇發(fā)布的類型,這里選擇事務(wù)復(fù)制(如圖5)
(圖5)
F 選擇發(fā)布的內(nèi)容(PERSON),這里不僅可以發(fā)表,還可以發(fā)布其他的數(shù)據(jù)庫對象,比如函數(shù)。在選擇某一個表之后還可以選擇發(fā)布某一列或幾列。在這個步驟下一個界面中可以選擇要發(fā)布的行。
(圖6)
G 設(shè)置發(fā)布的內(nèi)容之后設(shè)置 運行SQL代理的賬號。設(shè)置如下:
(圖7)
H 設(shè)置上一步之后,給復(fù)制起個名字PersonCopy。到此為止,發(fā)布和分發(fā)已配置成功。(如圖8)
(圖8)
第三步:配置訂閱。
訂閱有兩種方種,一種是由發(fā)布服務(wù)器向訂閱服務(wù)器“推”數(shù)據(jù),由訂閱服務(wù)器去請求訂閱數(shù)據(jù)。本例在SERVER02上設(shè)置請求訂閱。
A 第一步在SERVER02復(fù)制節(jié)點右擊訂閱,新建訂閱(圖9)
(圖9)
B 選擇發(fā)布服務(wù)器,在下拉列表框中選擇查找SQL SERVER 發(fā)布服務(wù)器,選擇SERVER01,就可以看到剛才新建的發(fā)布PersonCopy。如圖(10)
(圖10)
C 選擇訂閱方式。(圖11) 這里選擇請求訂閱
(圖11)
D 選擇訂閱的本地數(shù)據(jù)庫(如圖12)。
(圖12)
E 設(shè)置完本地數(shù)據(jù)庫之后要求設(shè)置運行代理的安全性,設(shè)置成SQL 代理賬號。完成以上設(shè)置后,訂閱已設(shè)置完成。
在SERVER01表中插入一條新記錄后,在SERVER02中去檢查是否同步過來。一般來說,幾乎SERVER01執(zhí)行完了,SERVER02就可以看到更新后的數(shù)據(jù)。