<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SQL中的發(fā)布與訂閱

          共 3129字,需瀏覽 7分鐘

           ·

          2021-12-24 00:47

          發(fā)布訂閱主要用來做數(shù)據(jù)庫的讀寫分離,當(dāng)單臺(tái)數(shù)據(jù)庫的壓力太大時(shí),可以考慮這種方案。一主多從,主服務(wù)器的數(shù)據(jù)庫只管寫入,其他的數(shù)據(jù)庫都是只讀也是一種很好的方案,當(dāng)然你也可以用它來實(shí)現(xiàn)在線備份數(shù)據(jù)的功能。


          背景描述

          發(fā)布服務(wù)器A: (遠(yuǎn)程端) , 數(shù)據(jù)庫服務(wù)名: GUANWANG1
          訂閱服務(wù)器B: (本機(jī)) ? , ?數(shù)據(jù)庫服務(wù)名: PC-LLRDBA
          需要從服務(wù)器A中數(shù)據(jù)庫發(fā)布,然后在B中訂閱A發(fā)布的數(shù)據(jù)庫;


          第一步:準(zhǔn)備工作
          準(zhǔn)備工作1: 配置機(jī)器名和數(shù)據(jù)庫服務(wù)名一致
          先檢查A,B中的機(jī)器名和數(shù)據(jù)庫服務(wù)名是否一致,這個(gè)很重要!
          查看方法:?
          1.檢查SQL Server 的服務(wù)器名稱
          use master
          go
          select @@servername
          select serverproperty('servername')
          (提示:可左右滑動(dòng)代碼)
          如果查出來的兩個(gè)名字不一樣,那就需要把他們的名字改成一樣的,方法如下:
          2.刪除所有之前配置的publishers('old_server_name'為之前的服務(wù)名)
          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ā)布



          第二步:發(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è)都檢查無誤了,基本上就搞定了吧!


          此外,還有一種報(bào)錯(cuò)是:"對(duì)路徑"XXXXX"訪問被拒絕或者沒有訪問路徑"xxx"的權(quán)限"等,這個(gè)錯(cuò)誤一般是用戶的權(quán)限不夠?qū)е碌?解決方法如下:?
          使用SQL Server發(fā)布數(shù)據(jù)庫快照的配置中,如果你選擇了使用SQL Server代理,而SQL Server代理服務(wù)使用的登陸身份不具有對(duì)存放快照文件位置的讀寫權(quán)限時(shí),就會(huì)出現(xiàn)該錯(cuò)誤。
          解決的方法是可以修改SQL Server代理服務(wù)的登錄身份,具體做法為:【程序】->【Sql Server Configuration Manager】->在左邊欄選擇【SQL Server服務(wù)】->在右側(cè)面板中【SQL Server 代理】一行上右擊,選擇【屬性】,在彈出的對(duì)話框中選擇【內(nèi)置賬戶】->LocalSystem即可。?


          至此,整個(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)入高手如云的交流群


          推薦閱讀

          瀏覽 125
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久五月影院 | 大香蕉网伊人在线视频 | 爽爽人人爽爽 | 二级黄色电影免费看 | 99思思热 |