SQL Server 同步複製測試

SQL Server 同步複製測試

1.     測試環境:

操作系統 windows  Server 2003 sp1  ,兩臺,獨立系統,不在一個信任域內(如果在同一信任域,權限操作就更簡單了)。

數據庫:SQL Server 2000 SP4 企業版

2.     條件準備:

1、安裝好兩臺windows 2003 server Sql server 2000企業版的服務器。

2、在兩臺windows 2003服務器添加windows 系統用戶SqlCopy ,密碼相同,屬於administrators 組。

3、在兩臺服務器的hosts文件中相互添加兩條記錄(參考“失敗可能的問題”部分)。

4、服務器名稱及及相關配置

Windows 主機名

Sql server 建庫

服務類型

Boco-server

Test數據庫(空)

訂閱服務器

Boco2006

Test數據庫(有數據)

發佈服務器

5、SQL server 上建立兩個sql 用戶:“fuzhi”,權限system administrators,具備管理髮布的數據庫的所有的權限(參看以下步驟)。

3.     配置發佈、訂閱服務步驟:

1、進入服務器的服務內,找到“SQLSERVERAGENT的”服務,雙擊,在彈出的屬性中,選“登錄”在登錄身份中輸入在準備條件中建立的帳號和密碼(本次用戶名爲“SqlCopy),點“確定”,重啓“SQLSERVERAGENT的”服務,使之生效。

2、打開SQL Server 2000的企業管理器,對兩臺SQL server進行註冊,不要採用local ip地址來註冊,採用windows 2003的主機名來註冊。

3、將需要發佈的服務器(主服務器),展開sql serer 樹,如下圖,右點右邊的空白處,在彈出的菜單中點“配置發佈、訂閱服務器和發佈”

 

4、啓動向導,繼續

 

5、提示如下圖,“boco2006”服務器是發佈服務器,點“下一步”。

6、出現如下圖,按照缺省。

7、選擇發佈數據放置點,默認也可。

8、出現如下的提示,這說明我們在建立帳號的時候,需要管理員權限或者具有該目錄的管理權限。

9、默認配置繼續。

10、            發佈配置完成。

4.     新建發佈

1、在兩臺服務器上建立SQL Server 用戶,用於相互登錄,不用SQL Serversa用戶,主要是sa用戶存在安全和其他用戶使用的情況,造成修改了sa密碼而複製無法順利進行。

2、修改該用戶的屬性,設置該用戶具有System Administrators 權限。

 

3、修改該用戶數據庫訪問權限

4、在發佈服務器上,展開目錄樹,點“發佈內容”,在右邊空白處有點,在彈出的菜單中,點“新建發佈”。

5、選擇要發佈的數據庫,這裏是“test”。

 

6、選擇“合併發佈”,繼續,這樣主要是在備用數據庫啓用主數據庫的時候,主數據成爲備用數據庫,系統正常使用。

7、缺省繼續即可。

8、選擇要發佈的內容,選擇“全部發布”。

9、“項目問題”中,唯一標識中,提示如果不帶列表的語句的Insert可能會失敗,即類似“Insert  table values( a,’b’)”,會失敗,“Insert  table aabb values( a,’b’)”成功。

10、            缺省繼續即可。

 

11、            剩下步驟缺省繼續即可。

 

12、            在配置好的發佈屬性中,選擇“訂閱”,點“強制新建【P】”。

 

 

13、            選擇訂閱服務,這裏訂閱服務器爲“BOCO-SERVER”

 

14、            數據,默認就可。

 
15、            默認配置,繼續即可,完成及訂閱完畢,沒有必要在訂閱服務器上配置訂閱,因爲訂閱已經在發佈服務器上強制。

5.     完成訂閱

1、進行測試,在準備階段,已經在訂閱服務器上建立了test數據庫,在沒有複製同步是,可以看到“boco-server”服務器上沒有user1 表。

2、同步後,兩個數據庫一樣。

3、平時可以查看相關的日誌,發佈服務器上,展開發布數據庫的樹“代理服務器”->“合併代理程序”。

6.     失敗可能的問題

1、在同步過程中,出現“遠程服務器不是內容訂閱服務器”的問題,該問題有可能兩個原因引起。

A、   hosts 文件問題,在準備工作中,hosts文件中配置的IP地址和主機名,但是如果 SQL Server的實例名成爲類似  wwwserver\remote 那麼在 hosts文件中 的格式爲

 

192.168.1.2                 wwwserver\remote    #注意中間的“\”

 

然後在企業管理中以“wwwserver\remote”重新註冊遠程的服務器,重新配置複製即可。

 

B、   修改了機器名等出現問題,可以按照以下的步驟解決。
   
       在查詢分析器裏執行:
         use master
         select srvid,srvname,datasource from sysservers   
          如果沒有srvid=0或者srvid=0(也就是本機器)但srvnamedatasource不一樣, 需要按如下方法修改(如果 本機的srvid必須是“0,否則也必須執行如下腳本:
         ----------------------以下可以直接粘貼到 查詢分析器 --------------------------
         USE master
        GO
        -- 設置兩個變量
        DECLARE @serverproperty_servername  varchar(100),  @servername    varchar(100)
        -- 取得Windows NT 服務器和與指定的 SQL Server 實例關聯的實例信息
        SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
        -- 返回運行 Microsoft SQL Server 的本地服務器名稱
        SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
        -- 顯示獲取的這兩個參數
        select @serverproperty_servername,@servername
        --如果@serverproperty_servername@servername不同(因爲你改過計算機名字),再運行下面的
        --刪除錯誤的服務器名
        EXEC sp_dropserver @server=@servername
        --添加正確的服務器名
        EXEC sp_addserver @server=@serverproperty_servername, @local='local'
        ---------------------到此結束------------------------------------
       修改這項參數,需要重新啓動MSSQLserverSqlserveragent服務才能生效
該問題還可參考:
【備註】本文經測試後,已經移植到生產環境中,效果良好!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章