換了新公司之后沒有DBA去管理數(shù)據(jù)庫佑菩,一切都得自己動(dòng)手。近來公司有不同服務(wù)器之間數(shù)據(jù)交互的需求,了解了一下Sqlserver自帶的訂閱和發(fā)布功能树姨,搗鼓了半天,記錄一下?lián)v鼓的內(nèi)容毫别,也是不太懂原理
準(zhǔn)備了兩臺百度云服務(wù)器做測試娃弓。
- 服務(wù)器A:安裝了Sqlserver 2012
- 服務(wù)器B:安裝了Sqlserver 2019
1.登錄百度云服務(wù)器管理后臺,防火墻添加端口(sqlserver默認(rèn)端口是1433岛宦,沒有手動(dòng)修改就是這個(gè))
2.登錄服務(wù)器設(shè)置防火墻端口(同樣是添加1433端口)
3.看一下這些協(xié)議有沒有開台丛,把他們通通都啟動(dòng),Sql server服務(wù)也需要啟動(dòng)(我是一股腦把這里看到的服務(wù)都啟動(dòng)了)
4.需要修改一下hosts文件(C:\Windows\System32\drivers\etc),需要在最下面加上IP和主機(jī)名,A服務(wù)器加的是B服務(wù)器的IP和主機(jī)名挽霉,B服務(wù)器加的是A服務(wù)器的IP和主機(jī)名(我加的是公網(wǎng)IP防嗡,AB服務(wù)器的IP和主機(jī)名我都加上去了,IP和主機(jī)名之間需要有空格)
5.兩臺服務(wù)器的數(shù)據(jù)庫都新建一個(gè)賬號和測試庫侠坎,這個(gè)賬號對測試庫需要要owner權(quán)限
幾番曲折蚁趁,前期工作準(zhǔn)備得差不多了(最好是在A服務(wù)的命令行ping一下B服務(wù)器的ip和主機(jī)名(修改了hosts的話,用ip能ping通的話实胸,ping主機(jī)名應(yīng)該也是可以通的)做了上面的還不一定就能保證能同步成功他嫡,痛苦)
然后開始在A服務(wù)器建立發(fā)布
6.右鍵新建發(fā)布,然后選擇發(fā)布數(shù)據(jù)庫
選擇發(fā)布類型(這里選了事務(wù)發(fā)布庐完。貌似事務(wù)發(fā)布不用做其他設(shè)置钢属,發(fā)布成功了后修改,數(shù)據(jù)就會很快過去门躯?快照發(fā)布的話還需要設(shè)置頻率)
選擇發(fā)布的表
下一步篩選條件跳過
再下一步淆党,選擇立即運(yùn)行
再下一步,這里有點(diǎn)麻煩讶凉,我搗鼓了很久
這里最好選擇在windows賬戶下運(yùn)行染乌,并用管理員賬號,不然后續(xù)讀某些文件夾沒有權(quán)限懂讯,一開始又不知道咋整(這里的域\賬號一般是主機(jī)名\賬號)荷憋,連接到發(fā)布服務(wù)器,賬號就是在第5步準(zhǔn)備得數(shù)據(jù)庫賬號
再下下一步域醇,發(fā)布名稱隨便起名字
然后就成功了
成功后會生成對應(yīng)的計(jì)劃台谊,可以右鍵發(fā)布項(xiàng)目"啟動(dòng)復(fù)制監(jiān)視器"查看運(yùn)行情況,也可以看看對應(yīng)計(jì)劃的歷史記錄是否有問題
7.B服務(wù)器建立訂閱
右鍵本地訂閱新建譬挚,一直下一步之后需要選擇發(fā)布服務(wù)器(A服務(wù)器)锅铅,這里需要填主機(jī)名,直接填I(lǐng)P還確定不了减宣,所以需要有做第4步盐须,不然無法通過主機(jī)名找到A服務(wù)器,而且這里最好是用sqlserver身份認(rèn)證漆腌,這里貌似是有跨服務(wù)器讀寫文件夾的操作贼邓,如果用windows認(rèn)證的話,代理跑訂閱的時(shí)候會發(fā)生報(bào)錯(cuò)闷尿,說xxx沒權(quán)限(這里我試一下用windows認(rèn)證塑径,看看能否把報(bào)錯(cuò)給弄出來看一看)
下一步,先嘗試用推送訂閱
然后添加訂閱服務(wù)器和數(shù)據(jù)庫
然后這里填具,同樣建議用windows管理員賬號
然后就成功了(第一次做的時(shí)候是有問題的统舀,這一次重復(fù)做記錄的時(shí)候就沒問題了匆骗,害)
因?yàn)閯偛胚x的時(shí)候推送訂閱,所以在訂閱服務(wù)器B上面是看不到訂閱的信息的誉简,需要回到A服務(wù)器看訂閱的情況(發(fā)布和訂閱都在A服務(wù)器做管理)
沒想到這一下子就成功了碉就,沒能把之前的報(bào)錯(cuò)重現(xiàn)
-
報(bào)錯(cuò)一:沒有xxx文件夾權(quán)限
這個(gè)貌似一般發(fā)生在請求訂閱的時(shí)候,請求訂閱會在B服務(wù)器管理闷串,需要訪問A服務(wù)的某快照文件夾瓮钥,這時(shí)候一般是沒有權(quán)限的,要更換快照文件夾烹吵,可以把A服務(wù)的文件夾復(fù)制到B服務(wù)器碉熄,也可以在A服務(wù)器建立新的文件夾,然后進(jìn)行共享肋拔,讓B服務(wù)器有權(quán)限訪問
- 報(bào)錯(cuò)二:進(jìn)程無法連接到 Subscriber xxx
這個(gè)報(bào)錯(cuò)我是發(fā)生在推送訂閱的時(shí)候具被,之前有提到過,如果在建立訂閱的時(shí)候只损,B服務(wù)連A服務(wù)器用windows身份的話,很可能就會出現(xiàn)這個(gè)問題七咧,這個(gè)我搞了半天跃惫,最后是修改了下圖這里才能正常同步(下圖右鍵訂閱項(xiàng)目選擇屬性,訂閱服務(wù)器連接要用Sql Server身份驗(yàn)證艾栋,用windows身份驗(yàn)證的時(shí)候很可能會出現(xiàn)進(jìn)程無法連接到xxx的情況)