最近做的一個項目要獲取存在於其他服務器的一些數據,為了安全起見,采用由其他“服務器”向我們服務器推送的方式實現。我們服務器使用的是sql server 2008 R2,其他“服務器”使用的都是SQL Server 2000,還都是運行在Windows XP上的,整個過程遇到了一些問題,也參考了一些文檔,最終費了好多事才算搞定。
【一、配置分發服務器】
SQLServer 2000的復制服務包括三個角色:發布服務器、分發服務器和訂閱服務器,關系如圖1所示。
圖1
其中發布服務器(數據源服務器)負責將數據的改變(如快照或事務等)傳送到分發服務器中,由分發服務器將這些數據的改變分發到訂閱服務器(目標服務器)中。其中分發服務器可以與發布服務器配置在一台服務器中。
在配置分發服務器之前,首先需要打開SQL Server Agent服務並配置為自動啟動。除此之外,對於數據庫復制操作,SQL Server Agent不能使用系統賬戶登錄,而必須為本地賬戶 ,可以在“登錄”選項卡中,將“登錄身份”設置為“此賬戶”,選擇任一管理員賬戶即可(該管理員賬戶必須有密碼)。
然後就可以配置分發服務器了。在SQL Server 2000中,打開企業管理器,然後選擇已經注冊的SQL Server服務器(此處為本機服務器),然後選擇“工具”菜單,選擇“向導”,出現如圖2所示的對話框。
圖2
選擇“配置發布和分發向導”,確定後點擊下一步出現如圖3所示的對話框。
圖3
如果需要在當前數據庫服務器上創建分發服務器,選擇第一項即可,否則選擇第二項,然後點擊下一步,出現如圖4所示的對話框。
圖4
這裡需要注意的是,快照文件夾路徑必須為網絡路徑,即計算機名盤符默認共享路徑,默認系統已經填好該項,直接點擊下一步即可。如果出現出錯的情況,可以打開cmd,輸入“net share”查看當前共享中是否有盤符的默認共享,如果沒有的話,使用“net share c$”即可創建默認共享,如果還不行可以訪問參考鏈接2。
成功後一路下一步即可配置好分發服務器。配置完分發服務器後,在注冊的數據庫服務器中就會出現“復制監視器一項”。
【二、配置發布數據庫】
對於SQL Server 2000向2000推送數據,接下來的操作可以繼續在企業管理器中完成,而對於SQL Server 2000向高版本SQL Server推送數據,則需要安裝相應版本的SQL Server Management Studio,否則在最後一步連接訂閱服務器時無法連接(出現“[sql-dmo]必須使用sql server2005 管理工具才能連接到此服務器”粗無)。我們的目標服務器安裝的是SQL Server 2008 R2,所以需要安裝SQL Server 2008 R2 Management Studio 。
安裝完成後首先連接到本機服務器,注意,服務器名稱不能使用“(local)”或者IP,必須使用本機計算機名 ,登錄方式使用SQL Server 身份認證。
要配置待發布的數據庫,首先需要確保該數據庫的“恢復模式”為“完整”,右鍵單擊數據庫,選擇屬性,然後選擇“選項”,在“恢復模式”中設置為“完整”即可。
接下來就可以創建本地發布了,展開本機數據庫,展開“復制”,在“本地發布”右鍵單擊選擇“新建發布”,如圖5。
圖5
點擊下一步後選擇待發布的數據庫,點擊下一步即進入選擇發布類型的對話框,如圖6所示。
圖6
其中快照發布適合於表中無主鍵的數據表,每次復制時將數據全部復制過去;事務發布要求發布的數據表必須含有主鍵,否則無法復制。顯然當數據量較大時,使用後者更好一些。如果數據庫可以修改,建議將沒有主鍵的表增加一個自增主鍵。這裡由於源數據表中沒有主鍵,也不能修改數據表結構,只能選擇“快照發布”。點擊下一步後出現選擇要發布的內容的對話框,如果某個表不符合要求(如選擇的事務發布但沒有主鍵)則表名前出現禁止符號並且無法選擇,如圖7所示。
圖7
再次點擊下一步後出現自定義篩選數據的對話框,如果不需要篩選數據,點擊下一步進入設置快照代理時間。快照代理即負責生成數據庫的修改,可以設置為按天、周、月重復執行。這裡每天推送一次,所以也只需要生成一次快照,如圖8所示。如果打算設置完訂閱後立即推送一次,可以選擇勾選第一個選項。
圖8
然後一路下一步即可完成發布的設置。
【三、配置訂閱】
完成上述兩步後就可以配置訂閱了,訂閱分為兩種,分別是推式訂閱和拉式訂閱,前者由分發服務器連接訂閱服務器,向訂閱服務器推送數據;後者由訂閱服務器連接分發服務器,向分發服務器拉取數據。所以在完成上一步後,“本地發布”中即出現了新創建的發布,右鍵單擊選擇“新建訂閱”即可出現“新建訂閱向導”對話框,點擊下一步後已經選擇了當前的訂閱,繼續點擊下一步,出現訂閱類型設置,如圖9。
圖9
這裡選擇“推式訂閱”,然後點擊下一步出現選擇訂閱服務器和訂閱數據庫的對話框,如圖10所示。
圖10
首先點擊“添加 SQL Server 訂閱服務器”添加訂閱服務器,出現“連接到服務器”對話框,需要注意的是,訂閱服務器也需要使用服務器名稱登錄。如果目標服務器與本地位於同一個局域網內,使用目標服務器名可以直接登錄;否則則需要設置hosts文件,添加目標服務器IP與名稱的對應關系才可以。登錄方式同樣使用SQL Server 身份認證。注意,修改完hosts重啟之後才會生效。
添加完訂閱服務器後,如果訂閱服務器中有同名的數據庫,則會自動顯示在“訂閱數據庫”中。除此之外,訂閱數據庫需要登錄賬號有“db_owner”權限,否則不會顯示在“訂閱數據庫”中,當然也可新建數據庫。點擊下一步後出現設置同步計劃的對話框,如圖11。
圖11
代理計劃可以設置為“連續運行”、“僅按需運行”或與創建發布時類似的自定義時間,其中“連續運行”指的是一直檢查更新並推送到訂閱服務器中,“僅按需運行”則需要手動執行,“<定義計劃>”與創建發布時相同,可以設置重復執行的周期。如果每天只推送一次的話,可以設置在上一步快照代理執行時間之後的一個事件,設置完同步計劃後下一步可以設置初始化時間,如圖12。