1. 程式人生 > >SQLServer2008R2 發布訂閱及相關問題解決辦法

SQLServer2008R2 發布訂閱及相關問題解決辦法

發布訂閱 通過 節點 lose 訂閱 select logs lec mic

前言:

  前兩天接到領導的任務,將一個系統A的客戶數據同步到另一個系統B中,以後客戶錄入入口只有A系統,B系統不提供錄入入口,因為各種原因不能使用接口方式A系統和B系統直接交互同步,只能通過數據庫重A庫同步到B庫。原想通過觸發器直接些過去的,但在跨服務器方面遇到種種問題,穩定性太差最終放棄,選擇使用發布訂閱的方式;沒想到發布訂閱也沒有想象的那麽順利,今天就來就發布訂閱遇到的問題說說解決方法,不全面只是我遇到的問題;

遇到問題:

  1、如果服務器開啟了防火墻,需要添加1433端口的出站入站

  2、發布服務器發布成功後,在訂閱服務器上訂閱,顯示訂閱成功後但是在本地訂閱下看不到訂閱信息:

    1)可能是發布的快照路徑權限問題,發布時一般默認在系統盤,可以將路徑修改到可配置權限的文件夾下(見下面發布部署2.3),將路徑下的repldata文件夾權限開放(註意:指定給這個文件夾設置,在上級設置不一定有效);

    2)服務名稱和主機名不同

    可以通過執行一下SQL查詢是否相同

    1 select @@servername
    2 select serverproperty(servername)

    如果不相同執行下面SQL修改

技術分享
 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
View Code

    需註意的是,改過之後必須要重啟一下SQL 服務器才可以

    3)主機名和其它服務器主機名稱相同

    修改主機名,重啟主機,按上一種方法將服務器名稱改為主機名稱,重啟服務;

    但是這樣可能還會有問題:發布訂閱都成功後,但是並不能同步數據,在發布服務器看同步狀態,查看詳細會看到說無法連接訂閱服務器,使用SQL客戶端遠程連接訂閱服務器發現使用IP方式可以連接,但用主機名稱方式不能連接;這裏咱們就要檢查一下訂閱服務器的登錄名裏面,會發現有一個以原來主機名稱+‘/administrator’命名的一個登錄名 

  技術分享我們將這個登錄名刪掉,然後新建登錄名

    技術分享

修改之後在發布服務器上重新初始化發布就可以了,啟動復制監視查看可以看到訂閱正在運行,查看數據庫數據同步成功

1部署事項

  1、發布服務器跟訂閱服務器必須在同一局域網內

  2、發布的時候SQL Server 需要有實際的服務器名稱才能連接到服務器。不支持通過服務器別名、IP地址或者其他備用名稱進行連接。因此如果當前的SQL Server的連接是IP地址的話,最好斷開連接,以實際的服務器名稱重新進行登錄

2 發布部署

  2.1 新建發布

    展開SQL Server 2008 服務器下的 【復制】 節點,會發現有【本地發布】和【本地訂閱】兩個節點,右擊【本地發布】節點,選擇【新建發布】

    技術分享

  2.2 發布向導

    1、如果服務器第一次進行發布設置,會彈出【發布向導】對話框

    技術分享

    2、設置【分發服務器】,選擇第一個

    技術分享

  2.3 快照文件夾

    點擊【下一步】,會出現設置【快照文件夾】對話框,我們選擇默認

    技術分享

  2.4 發布數據庫

    點擊【下一步】,選擇要發布的數據庫

    技術分享

  2.5 發布類型

    點擊【下一步】,選擇【發布類型】,我們選擇 【事務發布】。

  技術分享

  2.6 選擇發布對象

    點擊【下一步】,選擇數據庫中的發布對象,選擇所需的表、視圖,也可選擇所有的表

    技術分享

  2.7 項目問題

    點擊【下一步】,SQL Server 要求已發布存儲過程引用的所有對象(例如,表和用戶定義函數)在訂閱服務器上可用。如果沒有將被引用對象作為此發布中的項目發布,則必須在訂閱服務器上手動創建這些對象。(默認)

    技術分享

  2.8 篩選表行

    1、點擊【下一步】,進入【篩選表行】對話框:

    技術分享

    2、如果需要篩選表行點擊【添加】就會出現如下的篩選器對話框,可在篩選語句中添加SQL查詢語句

    技術分享

  2.9 快照代理

    不需要篩選,即所有數據全部同步,點擊【取消】後,直接【下一步】,進入【快照代理】設置對話框,這裏有兩個選擇一個是立即創建快照,一個是指定一個計劃(比如可以指定xxx天xxx時間運行),我們選擇第一個

    技術分享

  2.10 代理安全性

    1、點擊【下一步】進入【代理的安全性】設置

    技術分享

    2、點擊【安全性設置】,我們選擇 SQL SERVER 用戶

    技術分享

  2.11 向導操作

    1、點擊【確定】 後,返回 【代理安全性】設置對話框,繼續點擊【下一步】

    技術分享

    2、點擊【下一步】,我們給發布進行命名為:FaBu_TEST

   技術分享

    3、點擊【完成】,就會創建發布,並會顯示創建發布的結果

    技術分享

  2.12 設置文件夾權限

    發布創建完成後設置C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL路勁下repldata文件權限

    技術分享

  

3 訂閱部署

  3.1 新建訂閱

    右鍵點擊【本地訂閱】節點,打開,【新建訂閱】對話框

    技術分享

  3.2 訂閱向導

    1、彈出新建訂閱向導點

    技術分享

    2、擊下一步,選擇發布服務器,選擇查找SQL Server 發布服務器

    技術分享

    3、彈出鏈接到服務器,鏈接到發布服務器。

    註:不支持通過服務器別名、IP地址等名鏈接,需用服務器實際名稱進行鏈接

    技術分享

    4、點擊鏈接 ,選擇要為其創建一個或多個訂閱的發布, 我們選擇發布服務器WIN-XXX 中的數據庫發布 FaBu_TEST,然後點擊【下一步】

    技術分享

  3.3 分發代理位置

    在【分發代理位置】對話框中,選擇第一項,點擊【下一步】

    技術分享

  3.4 訂閱服務器

    在【訂閱服務器】對話框中,選擇新建數據庫,或者提前建好一個新數據庫選擇這個數據庫

    技術分享

  3.5 分發代理安全性

    1、在【分發代理安全性】對話框中,我們點擊“...”,進入安全性設置,我們選則的是 SQL 帳戶

    技術分享

    2、輸入訂閱服務器SQL Server的登陸名和密碼

    技術分享

  3.6 同步計劃

    點擊【下一步】,設置代理計劃,我們選擇默認的“連續運行”

    技術分享

  3.7 初始化訂閱

    點擊【下一步】,進入【初始化訂閱】對話框,選擇 “立即” 初始化

    技術分享

  3.8 向導操作

    1、在【初始化訂閱】點擊【下一步】:選創建訂閱

    技術分享

    2、點擊【下一步】:完成向導

    技術分享

    3、點擊【完成】,就會創建訂閱,並顯示創建結果

    技術分享

SQLServer2008R2 發布訂閱及相關問題解決辦法