標籤:style blog http io os 使用 ar strong 檔案
【文章摘要】
最近做的一個項目要擷取存在於其他伺服器的一些資料,為了安全起見,採用由其他“伺服器”向我們伺服器推送的方式實現。我們伺服器使用的是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 身份認證即可解決該問題。
【參考連結】
- Configuring Snapshot, Merge, and Transactional Replication:http://technet.microsoft.com/library/Cc917633
- windows預設共用的開啟和關閉:http://www.cnblogs.com/Fooo/archive/2007/06/04/771021.html
SQL Server 2000向SQL Server 2008 R2推送資料