程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> SqlServer2008 >> SQL Server 2000向SQL Server 2008 R2推送數據圖文教程

SQL Server 2000向SQL Server 2008 R2推送數據圖文教程

編輯:SqlServer2008

最近做的一個項目要獲取存在於其他服務器的一些數據,為了安全起見,采用由其他“服務器”向我們服務器推送的方式實現。我們服務器使用的是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。

圖12

初始化時間可以設置為“立即”或“首次同步時”,如果上一步設置發布時選擇的立即生成快照,同時這裡選擇“立即”初始化訂閱的話,那麼向導完成後會立即推送一次數據;否則將按預設的計劃執行。

按上述設置完成後遇到了一個問題,在執行訂閱代理時,出現“登錄失敗。該登錄名來自不受信任的域,不能與 Windows 身份驗證一起使用”的錯誤。但是查看發現不論本機服務器還是訂閱服務器均使用SQL Server 身份認證。後來進入SQL Server 2000的企業管理器,在本機服務器的“復制”中右鍵單擊,選擇“配置發布、訂閱服務器和分發”,然後點擊訂閱服務器,在訂閱服務器的列表中點擊之前設置的訂閱服務器右側的“...”,發現登錄方式為“Windows 身份認證”。重新將訂閱服務器的登錄配置為SQL Server 身份認證即可解決該問題。

本文及文章中代碼均基於“署名-非商業性使用-相同方式共享 3.0”,文章歡迎轉載,但請您務必注明文章的作者和出處鏈接,如有疑問請私信我聯系!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved