文章出處

【文章摘要】
最近做的一個項目要獲取存在于其他服務器的一些數據,為了安全起見,采用由其他“服務器”向我們服務器推送的方式實現。我們服務器使用的是SQL Server 2008 R2,其他“服務器”使用的都是SQL Server 2000,還都是運行在Windows XP上的,整個過程遇到了一些問題,也參考了一些文檔,最終費了好多事才算搞定。

 

【文章索引】

  1. 配置分發服務器
  2. 配置發布數據庫
  3. 配置訂閱

 

【一、配置分發服務器】

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 身份認證即可解決該問題。

 

【參考鏈接】

  1. Configuring Snapshot, Merge, and Transactional Replication:http://technet.microsoft.com/library/Cc917633
  2. windows默認共享的打開和關閉:http://www.cnblogs.com/Fooo/archive/2007/06/04/771021.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()