【文章摘要】
最近作的一個項目要獲取存在於其餘服務器的一些數據,爲了安全起見,採用由其餘「服務器」向咱們服務器推送的方式實現。咱們服務器使用的是SQL Server 2008 R2,其餘「服務器」使用的都是SQL Server 2000,還都是運行在Windows XP上的,整個過程遇到了一些問題,也參考了一些文檔,最終費了好多事纔算搞定。html
【文章索引】sql
SQLServer 2000的複製服務包括三個角色:發佈服務器、分發服務器和訂閱服務器,關係如圖1所示。windows
圖1安全
其中發佈服務器(數據源服務器)負責將數據的改變(如快照或事務等)傳送到分發服務器中,由分發服務器將這些數據的改變分發到訂閱服務器(目標服務器)中。其中分發服務器能夠與發佈服務器配置在一臺服務器中。服務器
在配置分發服務器以前,首先須要打開SQL Server Agent服務並配置爲自動啓動。除此以外,對於數據庫複製操做,SQL Server Agent不能使用系統帳戶登陸,而必須爲本地帳戶,能夠在「登陸」選項卡中,將「登陸身份」設置爲「此帳戶」,選擇任一管理員帳戶便可(該管理員帳戶必須有密碼)。網絡
而後就能夠配置分發服務器了。在SQL Server 2000中,打開企業管理器,而後選擇已經註冊的SQL Server服務器(此處爲本機服務器),而後選擇「工具」菜單,選擇「嚮導」,出現如圖2所示的對話框。工具
圖2代理
選擇「配置發佈和分發嚮導」,肯定後點擊下一步出現如圖3所示的對話框。server
圖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。
圖12
初始化時間能夠設置爲「當即」或「首次同步時」,若是上一步設置發佈時選擇的當即生成快照,同時這裏選擇「當即」初始化訂閱的話,那麼嚮導完成後會當即推送一次數據;不然將按預設的計劃執行。
按上述設置完成後遇到了一個問題,在執行訂閱代理時,出現「登陸失敗。該登陸名來自不受信任的域,不能與 Windows 身份驗證一塊兒使用」的錯誤。可是查看發現不論本機服務器仍是訂閱服務器均使用SQL Server 身份認證。後來進入SQL Server 2000的企業管理器,在本機服務器的「複製」中右鍵單擊,選擇「配置發佈、訂閱服務器和分發」,而後點擊訂閱服務器,在訂閱服務器的列表中點擊以前設置的訂閱服務器右側的「...」,發現登陸方式爲「Windows 身份認證」。從新將訂閱服務器的登陸配置爲SQL Server 身份認證便可解決該問題。
【參考連接】