SQL中的發(fā)布與訂閱
use master
go
select @@servername
select serverproperty('servername')select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'old_server_name',null
exec sp_dropserver 'old_server_name', 'droplogins'執(zhí)行完后,重啟SQL Server服務(wù)
3.配置計(jì)算機(jī)名與服務(wù)名一致
USE master
GO
if serverproperty('servername') <> @@servername ?
begin ?
? ? ? declare @server sysname ?
? ? ? set ? @server = @@servername ?
? ? ? exec sp_dropserver @server = @server ?
? ? ? set ? @server = cast(serverproperty('servername') as sysname) ?
? ? ? exec sp_addserver @server = @server , @local = 'LOCAL' ?
end
4.查看服務(wù)名
sp_helpserver準(zhǔn)備工作2: 配置數(shù)據(jù)庫服務(wù)器名稱的別稱

?服務(wù)器名稱處使用登陸別稱
因?yàn)閿?shù)據(jù)庫發(fā)布和訂閱,不能用ip登陸,必須用服務(wù)名登陸
方法之一是改服務(wù)器的登陸別稱!?
首先在本機(jī)B配置連接服務(wù)器A的登陸別稱:?
先在【開始】-->【所有程序】中打開【SQL Server配置管理器】:

?
?在【SQL Native Client 10.0配置(32位)】中的別名中配置,如圖:?

這里的別名必須和服務(wù)器B的服務(wù)器名一致也就是GUANWANG1,實(shí)際的按照自己的名字改動(dòng);
端口號(hào)是:1433
服務(wù)器是對(duì)應(yīng)的服務(wù)器機(jī)器的IP地址
協(xié)議是TCP/IP?
同理,在下面的【SQL Native Client 10.0配置】中也一樣配置?

?修改服務(wù)器別名
然后在服務(wù)器A中也要配置訪問本機(jī)B的別稱,這一步不能少,否則后面本地訂閱的時(shí)候會(huì)失敗并報(bào)錯(cuò),"進(jìn)程無法連接到 Subscriber“PC-LLRDBA”。"
切記,這里是雙向的,當(dāng)初我查了好久才想起來,服務(wù)端也要配置這個(gè)......
具體的方法同上:注意別名是本機(jī)B的服務(wù)名PC-LLRDBA, IP是本機(jī)的IP,實(shí)在不知道在cmd下config一下就有了!

??修改服務(wù)器別名
?準(zhǔn)備工作好了后,就進(jìn)行第二步發(fā)布
登陸服務(wù)器A數(shù)據(jù)庫,用別名登陸:
在【復(fù)制】-->【本地發(fā)布】中右鍵【新建發(fā)布】

新建發(fā)布
選擇你要發(fā)布的數(shù)據(jù)庫

?
選擇發(fā)布類型:(具體選哪種,自己百度下各種的差異),我這里選事務(wù)發(fā)布

?
?可以選擇發(fā)布的對(duì)象(表,存儲(chǔ)過程,視圖等等),也可以選擇部分內(nèi)容,點(diǎn)開勾選就行了

?
?如果沒有特別篩選的,就直接下一步(比如說我只要同步Order表中2014年以后的數(shù)據(jù),那么你可以點(diǎn)添加,增加篩選條件)?

?
選擇立即xxx,繼續(xù)下一步

??
輸入發(fā)布服務(wù)器的sa賬戶登陸密碼就行了?

勾選創(chuàng)建發(fā)布

?
查看發(fā)布向?qū)нx項(xiàng)?

?
創(chuàng)建發(fā)布成功

??
到此發(fā)布完成,你可以刷新后查看:

??
在另外一臺(tái)數(shù)據(jù)庫上選擇【復(fù)制】-->【本地訂閱】,然后右鍵【新建訂閱】

?
?這里選擇查找SQL Server發(fā)布服務(wù)器

?
?自動(dòng)彈出連接數(shù)據(jù)庫對(duì)話框,輸入發(fā)布服務(wù)器的服務(wù)器名稱,賬號(hào)密碼等。

?
連接成功后,選中需要的訂閱的數(shù)據(jù)庫發(fā)布:

?
選擇在分發(fā)服務(wù)器上運(yùn)行代理

??
在本地新建一個(gè)同名的數(shù)據(jù)庫:

?
配置新建數(shù)據(jù)庫的相關(guān)信息

??
點(diǎn)擊【與訂閱服務(wù)器的連接】下面的按鈕

?
按下圖進(jìn)行配置

??
選擇定義計(jì)劃:?

?
選擇代理計(jì)劃

?
初始化訂閱

?
初始化完成開始創(chuàng)建訂閱

?
完成訂閱向?qū)?/span>

?
訂閱就完成,然后刷新查看內(nèi)容:?

等過一段時(shí)間,數(shù)據(jù)同步完成后就可以查看數(shù)據(jù)了,是否一致了!
這樣訂閱操作就結(jié)束了。
訂閱完成后,卻發(fā)現(xiàn)本地訂閱中沒有內(nèi)容,但是剛剛確實(shí)已經(jīng)訂閱成功了啊,為什么呢?

?
然后在發(fā)布服務(wù)器中,右鍵本地發(fā)布中的數(shù)據(jù)庫,啟動(dòng)復(fù)制監(jiān)視器

?
發(fā)現(xiàn)是報(bào)錯(cuò)了?
這個(gè)原因可能有好多種:
1.訂閱的時(shí)候,輸入的密碼輸錯(cuò)了,我第一次就是輸成了發(fā)布服務(wù)器的密碼?

??
2.對(duì)應(yīng)的協(xié)議要開啟

?
?
3.對(duì)應(yīng)的服務(wù)要開啟Sql Server Browser和Sql Server 代理(MSSQLSERVER)?

這三個(gè)都檢查無誤了,基本上就搞定了吧!

至此,整個(gè)訂閱發(fā)布的內(nèi)容就結(jié)束了,感興趣的小伙伴可以在本地安裝一個(gè)虛擬機(jī)進(jìn)行試驗(yàn),有什么不懂的可以在底下留言~

最后給大家分享我寫的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》和《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來實(shí)操。
有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行
數(shù)據(jù)前線
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群
推薦閱讀
