一步步教你配置SQLSERVER合并復(fù)制(七)管理Publication

字號(hào):

現(xiàn)在要確保在第二篇所配置的域用戶擁有訪問(wèn)這個(gè)Publication的權(quán)限,因此我們要把這個(gè)用戶加入到SQL SERVER的用戶組并能管理發(fā)布這個(gè)Publication.打開我們的SQL SERVER,展開Security文件夾然后右擊Logins選擇New Login...
    在Login-New這個(gè)頁(yè)面中,將第二篇所配置好的SYNCDOMAINsyncuser用戶填入Login name文本框中。
    在右邊的Select a page的導(dǎo)航欄中選擇User Mapping,選上ParkSurvey數(shù)據(jù)庫(kù),然后點(diǎn)擊OK。
    回到SQL SERVER的資源管理器來(lái),展開Replication和Local Publications文件夾,右擊我們剛剛發(fā)布的Publication=>ParkSurvey:ParkSurveyPublication然后選擇Properties.
    在Publication Properties這個(gè)頁(yè)面中,我們可以看到我們?cè)谛陆≒ublication時(shí)做的每項(xiàng)選擇,如果你想修改它們,你也可以在這里直接修改它們,而不用在新建一個(gè)Publication.
    在Select a page導(dǎo)航欄中我們選擇Publication Access List,在右邊就可以顯示擁有權(quán)限建立同步快照的用戶。
    點(diǎn)擊Add打開Add Publication Access這個(gè)頁(yè)面,只有剛剛上面的配置的映射到這個(gè)Publication的用戶才會(huì)被顯示出來(lái)。點(diǎn)擊OK將其加入到列表當(dāng)中來(lái)。
    回到Publication Properties這個(gè)頁(yè)面,在Select a page導(dǎo)航頁(yè)面中我們選擇Subscription Options,在這里我要你將Limit concurrent processes設(shè)置成True,然后還需要將Maximun concurrent processes屬性值設(shè)置成10.為什么要這么設(shè)置呢?因?yàn)榧偃缒銚碛谐汕先f(wàn)個(gè)訂閱者,當(dāng)他們同時(shí)同步數(shù)據(jù)庫(kù)服務(wù)器時(shí),服務(wù)器很大的可能會(huì)掛掉。當(dāng)我們?cè)O(shè)置成如上的值之后,當(dāng)我們的合并復(fù)制的客戶端超過(guò)10個(gè)的時(shí)候,超出的部分將會(huì)自動(dòng)排成一個(gè)隊(duì)列等待其他訂閱者完成訂閱。當(dāng)然了這個(gè)值不一定要設(shè)置成10,您可以測(cè)試您的服務(wù)器,慢慢增大同時(shí)同步服務(wù)器數(shù)據(jù)庫(kù)的訂閱者的數(shù)量,得到一個(gè)的平衡點(diǎn)。
    在Select a page導(dǎo)航欄的最后一項(xiàng)Data Partitions,當(dāng)訂閱者試圖同步數(shù)據(jù)時(shí),這里會(huì)自動(dòng)列出這些快照信息。當(dāng)訂閱者發(fā)送不同的HOSTNAME的值去同步不同的數(shù)據(jù)時(shí),這些信息將幫助我們改進(jìn)減少初始數(shù)據(jù)同步時(shí)間。
    最后我們來(lái)看下Select a page上的Filter Rows,在這里我們只創(chuàng)建了一個(gè)帶一個(gè)參數(shù)過(guò)濾的Cities表以及與其通過(guò)CityId連接的Parks表,但其實(shí)我還有一張Survey表需要這么做,這張表有個(gè)特別之處就是我并不想讓訂閱者修改它的數(shù)據(jù),只愿意讓訂閱者同步它的數(shù)據(jù),用過(guò)濾條件的話該怎么做呢?
    點(diǎn)擊Add按鈕,然后選擇Add Filter...在Add Filter頁(yè)面,在下拉框中我們選擇Survey表,在Filter statement文本框中我們輸入過(guò)濾條件0=1,這或許是個(gè)最簡(jiǎn)單的方法去創(chuàng)建一個(gè)只供復(fù)制不提供合并的表了。
    點(diǎn)擊OK,然后我們就可以將Survey表加入到了Filtered Tables列表中來(lái)了,點(diǎn)擊選擇它,你會(huì)在Filter的文本框中看到Where 0=1.
    到這里為止,我們幾乎遍歷ParkSurveyPublication的每個(gè)屬性,我想你一定對(duì)它們有了一定的了解當(dāng)你點(diǎn)擊OK按鈕提交所有的更改的時(shí)候。當(dāng)你提交的改變被保存時(shí)頁(yè)面回出現(xiàn)一個(gè)提示框問(wèn)你是否產(chǎn)生一個(gè)新的快照,點(diǎn)擊YES.
    如果上面的操作未能產(chǎn)生一個(gè)新的快照,你可以在ParkSurveyPublication上點(diǎn)擊右鍵選擇View Snapshot Agent Status,這里你可以點(diǎn)擊開始創(chuàng)建快照,也可以點(diǎn)擊Stop結(jié)束創(chuàng)建快照,還可以點(diǎn)擊Monitor來(lái)監(jiān)視Publication的運(yùn)行情況,狀態(tài)欄會(huì)實(shí)時(shí)響應(yīng)點(diǎn)擊這些按鈕后所發(fā)生的動(dòng)作.
    點(diǎn)擊Monitor來(lái)啟動(dòng)Replication Monitor.
    這個(gè)工具將會(huì)顯示Park Survey Publication所顯示的被訂閱情況,從上面的這個(gè)界面就可以看得出這個(gè)Publication被訂閱的次數(shù)(一行代表一個(gè)訂閱),還可以看出訂閱者同步的方式,同步所花費(fèi)的時(shí)間等。也只有合并復(fù)制才有提供功能這么豐富的工具,在其他的用RDA,Web Service,DataSet等。
    檢查是否已建立Publication
    如果你已經(jīng)成功建立Publication,你將會(huì)在你發(fā)布復(fù)制的數(shù)據(jù)庫(kù)看到下面這些表,這里例子中是 ParkSurvey|Tables|System Tables:
    •MSmerge_contents
    •MSmerge_current_partition_mappings
    •MSmerge_generation_partition_mappings
    •MSmerge_genhistory
    •MSmerge_past_partition_mappings
    •MSmerge_tombstone
    •MSmerge_indentity_range(如果你有使用自動(dòng)增長(zhǎng)列的情況下)
    •MSmerge_conflicts_info
    你可以手動(dòng)rebulid這些表的索引,右鍵單擊Indexes,選擇Rebuild All,然后點(diǎn)擊OK,我的建議是一周執(zhí)行這種操作一次,這樣子的話,你可以新建一個(gè)SQL SERVER Job來(lái)執(zhí)行這項(xiàng)操作。
    到此為止,如果你已經(jīng)配置上了SQL SERVER Mobile Tools,你就可以使用這個(gè)復(fù)制了。