SQL Server的復(fù)制主要組成部分有:日志閱讀(Log Reader)、初始同步(Synchornization)、數(shù)據(jù)分發(fā)(Distribution)和分發(fā)數(shù)據(jù)庫(kù)。
初始同步是復(fù)制真正開(kāi)始執(zhí)行的第一步。類似于開(kāi)始傳送事務(wù)前,先給源數(shù)據(jù)庫(kù)照一個(gè)快照,把傳送事務(wù)前的那一時(shí)刻的數(shù)據(jù)拷貝到訂閱數(shù)據(jù)庫(kù)。其實(shí)質(zhì)就是把那時(shí)刻的數(shù)據(jù)生成BCP文件,通過(guò)網(wǎng)絡(luò)傳到訂閱數(shù)據(jù)庫(kù)。完成初始同步后,再開(kāi)始由日志閱讀初始同步以后的事務(wù),并由數(shù)據(jù)分發(fā)過(guò)程傳送分發(fā)數(shù)據(jù)庫(kù)中的事務(wù)到訂閱服務(wù)器中去。
復(fù)制的實(shí)現(xiàn)
下面我們結(jié)合在西安市國(guó)家稅務(wù)局內(nèi)部網(wǎng)絡(luò)信息系統(tǒng)的實(shí)例,介紹SQL Server6.5的配置以及其中需要注意的事項(xiàng)。
復(fù)制前的準(zhǔn)備
(1)使用一種字符集:市局和分局的SQL Server的配置使用一種字符集。
(2)允許分局服務(wù)器有足夠的事務(wù)日志空間。
(3)最好設(shè)置MSSQL Service 和SQLExecutive Service Auto Start at Boot time。
復(fù)制的安裝
(1)運(yùn)行Microsoft SQL Enterprise Manage,在Server Manager窗口中選擇源數(shù)據(jù)服務(wù)器。
(2)從Server選單選擇Replication Configuration, 然后從所出現(xiàn)的子選單選擇Install Publishing。出現(xiàn)Install Replication Publishing 對(duì)話框。
(3)選擇Local-Install New Local Distribution Database選項(xiàng)(配置該服務(wù)器充當(dāng)自身的分發(fā)服務(wù)器)。
在為分發(fā)數(shù)據(jù)庫(kù)建立分發(fā)數(shù)據(jù)庫(kù)設(shè)備時(shí),要根據(jù)源數(shù)據(jù)的更新率估計(jì)分發(fā)數(shù)據(jù)設(shè)備的大小,盡量把分發(fā)數(shù)據(jù)庫(kù)建大些。
設(shè)置出版和訂閱服務(wù)器和數(shù)據(jù)庫(kù)
在前面的安裝分發(fā)數(shù)據(jù)庫(kù)中,如果在詢問(wèn)是否在本次配置服務(wù)器選項(xiàng)對(duì)話框中,選擇YES,則出現(xiàn)Replication-Publishing對(duì)話框。在Enable Publishin to These Servers(左邊列表)目錄中選擇訂閱的服務(wù)器,在本實(shí)例中為信息中心的SQL Server。在Publishing Database下(右邊列表),選擇被允許出版數(shù)據(jù)的數(shù)據(jù)庫(kù)。
回到Server Manager,選擇訂閱服務(wù)器,從Server選單選擇Replication Configuration;然后從出現(xiàn)的下拉選單選擇Subscribing,出現(xiàn)Replication-Subscribing對(duì)話框。在左側(cè)的Publishing Server框中選擇源數(shù)據(jù)SQL服務(wù)器,在右側(cè)的框內(nèi)選擇拷貝的數(shù)據(jù)庫(kù)。該系統(tǒng)實(shí)現(xiàn)的一個(gè)重要部分就是各分局稅收征管數(shù)據(jù)的復(fù)制。
安裝SQL Server復(fù)制并設(shè)置復(fù)制的服務(wù)器和數(shù)據(jù)庫(kù)后,要進(jìn)行出版物的設(shè)置,就是指定復(fù)制數(shù)據(jù)庫(kù)中那些表要進(jìn)行復(fù)制,一個(gè)出版物可以包括很多表。
從Server Manager窗口,選擇源數(shù)據(jù)服務(wù)器。
從Manage選單,選擇Replication,然后選擇Publication對(duì)話框。
選擇“NEW”,出現(xiàn)Edit Publications對(duì)話框。為該復(fù)制數(shù)據(jù)設(shè)置一個(gè)名字,選擇要復(fù)制的表到右邊的列表。
這里要注意到這樣一個(gè)情況,因?yàn)槲覀円獜亩鄠(gè)源數(shù)據(jù)庫(kù)向一個(gè)中心服務(wù)器數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù),一定要保證源數(shù)據(jù)之間不會(huì)互相影響。復(fù)制的表中要有字段定義數(shù)據(jù)的來(lái)源。
在Edit Publications對(duì)話框,選擇右邊列表中要復(fù)制的表,按“Edit”按鈕,進(jìn)入Manage Article對(duì)話框,在最下面的Restriction Clause中輸入標(biāo)識(shí)唯一源數(shù)據(jù)的條件。
在Manage Article對(duì)話框中,選擇Scripts標(biāo)簽。按“Generate”按鈕,出現(xiàn)模式源設(shè)置畫(huà)面。這里需要設(shè)置初始同步的模式。在多個(gè)源數(shù)據(jù)庫(kù)向一個(gè)中心數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)時(shí),這里一定要選擇“DELETE DATA Using Restriction Clause”,即是用前面的唯一標(biāo)識(shí)條件對(duì)數(shù)據(jù)操作。否則會(huì)造成不同數(shù)據(jù)源的復(fù)制數(shù)據(jù)互相影響。
開(kāi)發(fā)體會(huì)
SQL Server的復(fù)制被設(shè)計(jì)成最小用戶干預(yù)的實(shí)現(xiàn)。一旦設(shè)置完成后,基本不需要用戶再去進(jìn)行處理。雖然初始同步時(shí)SQL Server自動(dòng)進(jìn)行的,但在實(shí)際應(yīng)用中,廣域網(wǎng)的連接(DDN、X.25)常常不能完成這種同步,所以需要我們手工完成初始同步,例如自己把源數(shù)據(jù)庫(kù)BCP數(shù)據(jù)導(dǎo)出,再導(dǎo)入到訂閱數(shù)據(jù)庫(kù)中,選擇初始同步的模式為No Data Synchronization。
SQL Server的復(fù)制是基于事務(wù)的。在廣域網(wǎng)的連接速度比較慢的情況下,不要做一次更新很多記錄的操作,例如一條無(wú)條件限制的UPDATE語(yǔ)句,在源數(shù)據(jù)庫(kù)中可能影響1000條記錄,但在事務(wù)傳送中,會(huì)發(fā)出1000條UPDATE語(yǔ)句并作為一個(gè)事務(wù)傳出,很容易造成復(fù)制失敗。這時(shí)最好把更新的操作分解得很小,每一條更新語(yǔ)句都作為單獨(dú)的事務(wù)傳送。
適當(dāng)增大分發(fā)數(shù)據(jù)庫(kù)的大小,保證在網(wǎng)絡(luò)不同的情況下,分發(fā)數(shù)據(jù)庫(kù)有足夠的空間保存更新操作的事務(wù)。
及時(shí)清除分發(fā)數(shù)據(jù)庫(kù)。設(shè)置復(fù)制后,SQL Server會(huì)生成一個(gè)清除分發(fā)數(shù)據(jù)庫(kù)的任務(wù),負(fù)責(zé)把分發(fā)數(shù)據(jù)庫(kù)中分發(fā)到訂閱服務(wù)器的事務(wù)刪除。但缺省情況下,清除任務(wù)是每天夜里105執(zhí)行,如果你的SQL Server服務(wù)器不是24小時(shí)開(kāi)機(jī),注意把該任務(wù)調(diào)整到開(kāi)機(jī)的時(shí)間范圍內(nèi)內(nèi)執(zhí)行。復(fù)制數(shù)據(jù)的設(shè)置
安裝SQL Server復(fù)制并設(shè)置復(fù)制的服務(wù)器和數(shù)據(jù)庫(kù)后,要進(jìn)行出版物的設(shè)置,就是指定復(fù)制數(shù)據(jù)庫(kù)中那些表要進(jìn)行復(fù)制,一個(gè)出版物可以包括很多表。
從Server Manager窗口,選擇源數(shù)據(jù)服務(wù)器。
從Manage選單,選擇Replication,然后選擇Publication對(duì)話框。
選擇“NEW”,出現(xiàn)Edit Publications對(duì)話框。為該復(fù)制數(shù)據(jù)設(shè)置一個(gè)名字,選擇要復(fù)制的表到右邊的列表。
這里要注意到這樣一個(gè)情況,因?yàn)槲覀円獜亩鄠(gè)源數(shù)據(jù)庫(kù)向一個(gè)中心服務(wù)器數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù),一定要保證源數(shù)據(jù)之間不會(huì)互相影響。復(fù)制的表中要有字段定義數(shù)據(jù)的來(lái)源。
在Edit Publications對(duì)話框,選擇右邊列表中要復(fù)制的表,按“Edit”按鈕,進(jìn)入Manage Article對(duì)話框,在最下面的Restriction Clause中輸入標(biāo)識(shí)唯一源數(shù)據(jù)的條件。
在Manage Article對(duì)話框中,選擇Scripts標(biāo)簽。按“Generate”按鈕,出現(xiàn)模式源設(shè)置畫(huà)面。這里需要設(shè)置初始同步的模式。在多個(gè)源數(shù)據(jù)庫(kù)向一個(gè)中心數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)時(shí),這里一定要選擇“DELETE DATA Using Restriction Clause”,即是用前面的唯一標(biāo)識(shí)條件對(duì)數(shù)據(jù)操作。否則會(huì)造成不同數(shù)據(jù)源的復(fù)制數(shù)據(jù)互相影響。
推薦:2007年11月網(wǎng)絡(luò)工程師考試全真模擬試題一下午試卷
更多軟考資料請(qǐng)?jiān)L問(wèn):考試吧軟件水平考試欄目
希望與更多網(wǎng)友交流,請(qǐng)進(jìn)入考試吧軟件水平考試論壇
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |