如何實現兩個數據庫之間的同步


  •  

     

      SyncNavigator是一款功能強大的數據庫同步軟件,適用於SQL SERVER, MySQL,具有自動/定時同步數據、無人值守、故障自動恢復、同構/異構數據庫同步、斷點續傳和增量同步等功能,支持Windows xp以上所有操作系統,適用於大容量數據庫快速同步。

     

    安裝包下載地址:https://www.syncnavigator.cn/Setup.zip

     

    幫助文檔地址:https://www.syncnavigator.cn/Help_zh-CN.chm

     

    Web文檔地址:https://www.syncnavigator.cn/chm/index.htm

     

    SyncNavigator v8.6.2(數據庫同步軟件)下載地址

     

    SyncNavigator v8.6.2(數據庫同步軟件)下載地址

     


     

    創建第一個同步項目

     


     

    使用 HKROnline SyncNavigator 創建一個數據庫同步項目。只需要通過簡單的配置,創建完成后您可以隨時執行數據庫同步任務。

     

    1.點擊 “SyncNavigator(Client)” 圖標進入系統。

     

    2.在登錄界面中輸入連接到的服務器地址,點擊 “確定” 按鈕開始連接。

     

    • 注意:這里不是登陸您的數據庫,而是登陸到本軟件的管理端。
    • 默認情況下直接點擊 “連接” 按鈕即可(本機默認已經安裝)。
    • 默認服務器登錄用戶名為 “admin” 密碼為空。
    • 本機服務器地址 = 127.0.0.1 。
    • 您可以使用域名或者IP地址作為服務器地址。如果指定了端口號可以使用 IP:Port 方式填寫。

     

    下載網站:www.SyncNavigator.CN 
     客服QQ1793040
    ----------------------------------------------------------


    關於HKROnline SyncNavigator 注冊機價格的問題

     

     

    HKROnline SyncNavigator 8.4.1 非破解版 注冊機 授權激活教程
     

     

     

     

    最近一直在研究數據庫同步的問題,在網上查了很多資料,也請教了很多人,找到了一種通過快照復制的方法。研究了一番后發現之前就是用的這個方法,效果不是很好,果斷放棄。經過了一番尋覓和他人指點,最后從一位熱心網友那里得知一款很好用的軟件—— SyncNavigator。

     

     

    好東西就要拿出來跟大家分享,所以今天向大家介紹一下這款軟件,及其一些使用方法。下面先看看它有什么強大的功能吧!

     

    SyncNavigator的基本功能:

     

    自動同步數據/定時同步數據
    無論是實時同步/24小時不間斷同步,還是根據計划任務(每小時/每日/每周/等)定時自動同步都能完全勝任。

    完整支持 Microsoft SQL Server
    完整支持 Microsoft SQL Server 2000 2005 2008 數據庫類型。並能在不同數據庫版本之間相互同步數據。

    支持 MySQL 4.1 以上版本
    支持 MySQL 4.1 5.0 5.1 5.4 5.5。並能在不同數據庫版本之間相互同步數據。

    無人值守和故障自動恢復
    當數據庫故障或網絡故障以后,無需人工干預(或操作)自動恢復同步並確保數據完全准確,可靠。

    同構數據庫同步/異構數據庫同步
    SQL Server to SQL Server, MySQL to MySQL, SQL Server to MySQL 等都能輕松實現。

    斷點續傳和增量同步
    當同步完成(或中斷)后,再次同步時能繼續上一次的位置增量同步,避免每次都需要從頭開始的問題。

     

     

     

    創建一個同步項目

     

    安裝完成后會有兩個圖標:

     

    1. 點擊 "SyncNavigator (客戶端)" 圖標進入系統。

    2. 在登錄界面中輸入連接到的服務器地址,點擊 "確定" 按鈕開始連接。

    注意:這里不是登陸您的數據庫,而是登陸到本軟件的管理端。
    默認情況下直接點擊 "連接" 按鈕即可(本機默認已經安裝)。
    默認服務器登錄用戶名為 "admin" 密碼為空。
    本機服務器地址為 127.0.0.1 。
    您可以使用域名或者IP地址作為服務器地址。


     

    3. 切換到 "同步管理" 面板中點擊 "新建" 按鈕開始創建同步項目。

     

     

     

    4. 首先切換到 "來源數據庫" 選項卡。填寫同步的來源數據庫信息。  (存放需要同步數據的數據庫叫做來源數據庫)

    一般情況下只需要輸入數據庫地址,數據庫名稱,登錄用戶名,登錄密碼。
    數據庫地址: 來源數據所在機器的地址。可以是域名或者IP地址。
    數據庫名稱: 來源數據庫名稱。如果已經指定了默認的登錄數據庫可以為空。
    登錄用戶名: 登錄數據庫服務器使用的用戶名。如果需要使用Windows賬戶登錄請變更 "登錄方式"
    連接測試: 測試輸入的信息是否正確。如果連接失敗則會返回具體錯誤信息。


     

    5. 切換到 "目標數據庫" 選項卡。以相同的方式填寫同步的目標數據庫。

     

    目標數據可以像來源數據庫那樣選擇已有的數據庫,也可以通過本軟件創建一個新的數據庫,選擇已有數據庫步驟大致同上,新建數據庫步驟如下:

    您只需要創建一個新的目標數據庫,軟件會自動創建最大兼容的表結構。
    如果您希望目標數據庫與來源數據庫表結構完全一致,您只需要在目標數據庫創建一個空表結構即可。
    當您使用 MySQL 作為來源數據庫時,同步的表至少需要一個主鍵。
    目標數據庫不應包含外鍵約束,因為它可能導致部分數據無法同步。
    如果您的目標數據庫與來源數據庫結構(如字段類型,約束)不兼容,這可能導致部分數據無法同步。
    假設您設置來源庫為 192.168.1.2 ,設置目標數據庫為 192.168.1.3, 那么數據將從192.168.1.2 同步到 192.168.1.3。如果您的方向設置錯誤,可能會導致數據被覆蓋。
    6. 切換到 "同步內容設置" 選項卡。選擇需要同步的數據庫表。

    如果需要設置每個表的具體內容可以點擊 "詳細設置" 按鈕進行調整。
    您可以設置條件過濾。比如只查詢評分大於90的表記錄,或者隱藏不需要同步的字段。
    如果在這一個步驟未勾選任何表則不會同步任何內容。
     

     

     

    7. 點擊 "確定"按鈕完成項目設置。

    8. 切換到 "總控制台" 面板中選擇需要開始同步的項目。點擊 "開始" 按鈕即可開始數據庫同步。

     

     

     

     

     

     

    自動同步數據庫數據

    使用 HKROnlineSyncNavigator 自動同步數據庫數據。與谷歌日歷、Hotmail日歷等的操作非常類似,您只需要設置同步任務執行的時間系統便能在指定的時間自動運行。

    1. 在 "同步管理"面板中選擇需要設置的項目,點擊 "修改" 按鈕開始設置。

     

    兩台服務器分別架在兩個不同的機房,要實現所有表中數據的同步,延時一兩分鍾沒關系,數據庫數據量很大,表大概有不到一百個吧,怎么實現同步?
  •  
     
  •  
    不同服務器數據庫之間的數據操作
  •  
     
  •  
    –創建鏈接服務器
  •  
    execsp_addlinkedserver ‘ITSV ‘, ”, ‘SQLOLEDB ‘, ‘遠程服務器名或ip地址 ‘
  •  
    execsp_addlinkedsrvlogin ‘ITSV ‘, ‘false ‘,null, ‘用戶名 ‘, ‘密碼 ‘
  •  
     
  •  
    –查詢示例
  •  
    select*fromITSV.數據庫名.dbo.表名
  •  
     
  •  
    –導入示例
  •  
    select*into表 fromITSV.數據庫名.dbo.表名
  •  
     
  •  
    –以后不再使用時刪除鏈接服務器
  •  
    execsp_dropserver ‘ITSV ‘, ‘droplogins ‘
  •  
     
  •  
    –連接遠程/局域網數據(openrowset/openquery/opendatasource)
  •  
    –1、openrowset
  •  
     
  •  
    –查詢示例
  •  
    select*fromopenrowset( ‘SQLOLEDB ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  •  
     
  •  
    –生成本地表
  •  
    select*into表 fromopenrowset( ‘SQLOLEDB ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  •  
     
  •  
    –把本地表導入遠程表
  •  
    insertopenrowset( ‘SQLOLEDB ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)
  •  
    select*from本地表
  •  
     
  •  
    –更新本地表
  •  
    updateb
  •  
    setb.列A=a.列A
  •  
    fromopenrowset( ‘SQLOLEDB ‘, ‘sql服務器名 ‘; ‘用戶名 ‘; ‘密碼 ‘,數據庫名.dbo.表名)asa innerjoin本地表 b
  •  
    ona.column1=b.column1
  •  
     
  •  
    –openquery用法需要創建一個連接
  •  
     
  •  
    –首先創建一個連接創建鏈接服務器
  •  
    execsp_addlinkedserver ‘ITSV ‘, ”, ‘SQLOLEDB ‘, ‘遠程服務器名或ip地址 ‘
  •  
    –查詢
  •  
    select*
  •  
    FROMopenquery(ITSV, ‘SELECT * FROM 數據庫.dbo.表名 ‘)
  •  
    –把本地表導入遠程表
  •  
    insertopenquery(ITSV, ‘SELECT * FROM 數據庫.dbo.表名 ‘)
  •  
    select*from本地表
  •  
    –更新本地表
  •  
    updateb
  •  
    setb.列B=a.列B
  •  
    FROMopenquery(ITSV, ‘SELECT * FROM 數據庫.dbo.表名 ‘) asa
  •  
    innerjoin本地表 b ona.列A=b.列A
  •  
     
  •  
    –3、opendatasource/openrowset
  •  
    SELECT *
  •  
    FROM opendatasource( ‘SQLOLEDB ‘, ‘Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ‘).test.dbo.roy_ta
  •  
    –把本地表導入遠程表
  •  
    insertopendatasource( ‘SQLOLEDB ‘, ‘Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ‘).數據庫.dbo.表名
  •  
    select*from
  •  
     
  •  
     
  •  
     
  •  
    用強制訂閱實現數據庫同步操作
  •  
    大量和批量的數據可以用數據庫的同步機制處理:
  •  
    //
  •  
    說明:
  •  
    為方便操作,所有操作均在發布服務器(分發服務器)上操作,並使用推模式
  •  
    在客戶機器使用強制訂閱方式。
  •  
     
  •  
    有疑問聯系作者:zlp321001@hotmail.com
  •  
     
  •  
    測試通過
  •  
     
  •  
    //
  •  
    –1:環境
  •  
    服務器環境:
  •  
    機器名稱: ZehuaDb
  •  
    操作系統:Windows 2000Server
  •  
    數據庫版本:SQL 2000Server 個人版
  •  
     
  •  
    客戶端
  •  
    機器名稱:Zlp
  •  
    操作系統:Windows 2000Server
  •  
    數據庫版本:SQL 2000Server 個人版
  •  
     
  •  
    –2:建用戶帳號
  •  
    在服務器端建立域用戶帳號
  •  
    我的電腦管理->本地用戶和組->用戶->建立
  •  
    UserName:zlp
  •  
    UserPwd:zlp
  •  
     
  •  
    –3:重新啟動服務器MSSQLServer
  •  
    我的電腦->控制面版->管理工具->服務->MSSQLServer 服務
  •  
    (更改為:域用戶帳號,我們新建的zlp用戶 ./zlp,密碼:zlp)
  •  
     
  •  
    –4:安裝分發服務器
  •  
    A:配置分發服務器
  •  
    工具->復制->配置發布、訂閱服務器和分發->下一步->下一步(所有的均采用默認配置)
  •  
    B:配置發布服務器
  •  
    工具->復制->創建和管理發布->選擇要發布的數據庫(SZ)->下一步->快照發布->下一步->
  •  
    選擇要發布的內容->下一步->下一步->下一步->完成
  •  
    C:強制配置訂閱服務器(推模式,拉模式與此雷同)
  •  
    工具->復制->配置發布、訂閱服務器和分發->訂閱服務器->新建->SQL Server數據庫->輸入客戶端服務器名稱(ZLP)->使用SQL Server 身份驗證(sa,空密碼)->確定->應用->確定
  •  
    D:初始化訂閱
  •  
    復制監視器->發布服務器(ZEHUADB)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱服務器->ZLP->
  •  
    下一步->下一步->下一步->下一步->完成
  •  
     
  •  
    –5:測試配置是否成功
  •  
    復制監視器->發布服務器(ZEHUADB)->雙擊SZ:SZ->點狀態->點立即運行代理程序
  •  
    查看:
  •  
    復制監視器->發布服務器(ZEHUADB)->SZ:SZ->選擇ZLP:SZ(類型強制)->鼠標右鍵->啟動同步處理
  •  
    如果沒有錯誤標志(紅色叉),恭喜您配置成功
  •  
     
  •  
    –6:測試數據
  •  
    –在服務器執行:
  •  
    選擇一個表,執行如下SQL
  •  
    insertintoWQ_NEWSGROUP_S select’測試成功’,5
  •  
     
  •  
    復制監視器->發布服務器(ZEHUADB)->SZ:SZ->快照->啟動代理程序
  •  
    ->ZLP:SZ(強制)->啟動同步處理
  •  
     
  •  
    去查看同步的 WQ_NEWSGROUP_S 是否插入了一條新的記錄
  •  
     
  •  
    測試完畢,通過。
  •  
     
  •  
     
  •  
    –7修改數據庫的同步時間,一般選擇夜晚執行數據庫同步處理
  •  
    (具體操作略) 😀
  •  
     
  •  
    /*
  •  
    注意說明:
  •  
    服務器一端不能以(local)進行數據的發布與分發,需要先刪除注冊,然后新建注冊本地計算機名稱
  •  
     
  •  
    卸載方式:工具->復制->禁止發布->是在”ZehuaDb”上靜止發布,卸載所有的數據庫同步配置服務器
  •  
     
  •  
    注意:發布服務器、分發服務器中的SQLServerAgent服務必須啟動
  •  
    采用推模式: “D:/Microsoft SQL Server/MSSQL/REPLDATA/unc” 目錄文件可以不設置共享
  •  
    拉模式:則需要共享~!
  •  
     
  •  
    */
  •  
     
  •  
    少量數據庫同步可以采用觸發器實現,同步單表即可:
  •  
     
  •  
    ========================================================
  •  
     
  •  
    配置過程中可能出現的問題,總結如下:(感謝作者: 余楓 提供的幫助)
  •  
     
  •  
    ========================================================
  •  
     
  •  
    在SQL Server 2000里設置和使用數據庫復制之前,應先檢查相關的幾台SQL Server服務器下面幾點是否滿足:
  •  
     
  •  
    1、MSSQLserver和Sqlserveragent服務是否是以域用戶身份啟動並運行的(./administrator用戶也是可以的)
  •  
     
  •  
    如果登錄用的是本地系統帳戶local,將不具備網絡功能,會產生以下錯誤:
  •  
     
  •  
    進程未能連接到Distributor ‘@Server name’2、檢查相關的幾台SQL Server服務器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)
  •  
     
  •  
    在查詢分析器里執行:
  •  
    usemaster
  •  
    selectsrvid,srvname,datasource fromsysservers
  •  
     
  •  
    如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:
  •  
     
  •  
    USEmaster
  •  
    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不同(因為你改過計算機名字),再運行下面的
  •  
    –刪除錯誤的服務器名
  •  
    EXECsp_dropserver @server=@servername
  •  
    –添加正確的服務器名
  •  
    EXECsp_addserver @server=@serverproperty_servername, @local=’local’
  •  
     
  •  
    修改這項參數,需要重新啟動MSSQLserver和Sqlserveragent服務才能生效。
  •  
     
  •  
    這樣一來就不會在創建復制的過程中出現18482、18483錯誤了。
  •  
     
  •  
    3、檢查SQL Server企業管理器里面相關的幾台SQL Server注冊名是否和上面第二點里介紹的srvname一樣
  •  
     
  •  
    不能用IP地址的注冊名。
  •  
     
  •  
    (我們可以刪掉IP地址的注冊,新建以SQL Server管理員級別的用戶注冊的服務器名)
  •  
     
  •  
    這樣一來就不會在創建復制的過程中出現14010、20084、18456、18482、18483錯誤了。
  •  
     
  •  
    4、檢查相關的幾台SQL Server服務器網絡是否能夠正常訪問
  •  
     
  •  
    如果ping主機IP地址可以,但ping主機名不通的時候,需要在
  •  
     
  •  
    winnt/system32/drivers/etc/hosts (WIN2000)
  •  
    windows/system32/drivers/etc/hosts (WIN2003)
  •  
     
  •  
    文件里寫入數據庫服務器IP地址和主機名的對應關系。
  •  
     
  •  
    例如:
  •  
     
  •  
    127.0.0.1 localhost
  •  
    192.168.0.35 oracledb oracledb
  •  
    192.168.0.65 fengyu02 fengyu02
  •  
    202.84.10.193 bj_db bj_db
  •  
     
  •  
    或者在SQL Server客戶端網絡實用工具里建立別名,例如:
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
    5、系統需要的擴展存儲過程是否存在(如果不存在,需要恢復):
  •  
     
  •  
    sp_addextendedproc ‘xp_regenumvalues’,@dllname=’xpstar.dll’
  •  
    go
  •  
    sp_addextendedproc ‘xp_regdeletevalue’,@dllname=’xpstar.dll’
  •  
    go
  •  
    sp_addextendedproc ‘xp_regdeletekey’,@dllname=’xpstar.dll’
  •  
    go
  •  
    sp_addextendedproc xp_cmdshell ,@dllname=’xplog70.dll’
  •  
    接下來就可以用SQL Server企業管理器里[復制]->右鍵選擇
  •  
    ->[配置發布、訂閱服務器和分發]的圖形界面來配置數據庫復制了。
  •  
     
  •  
    下面是按順序列出配置復制的步驟:
  •  
     
  •  
    一、建立發布和分發服務器
  •  
     
  •  
    [歡迎使用配置發布和分發向導]->[選擇分發服務器]
  •  
     
  •  
    ->[使”@servername”成為它自己的分發服務器,SQL Server將創建分發數據庫和日志]
  •  
     
  •  
    ->[制定快照文件夾]->[自定義配置]->[否,使用下列的默認配置]->[完成]
  •  
     
  •  
    上述步驟完成后, 會在當前”@servername” SQL Server數據庫里建立了一個distribion庫和
  •  
     
  •  
    一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)
  •  
     
  •  
    服務器上新增加了四個作業:
  •  
    [代理程序歷史記錄清除: distribution ]
  •  
    [分發清除: distribution ]
  •  
    [復制代理程序檢查 ]
  •  
    [重新初始化存在數據驗證失敗的訂閱 ]
  •  
     
  •  
    SQL Server企業管理器里多了一個復制監視器, 當前的這台機器就可以發布、分發、訂閱了。
  •  
     
  •  
    我們再次在SQL Server企業管理器里[復制]->右鍵選擇
  •  
    ->[配置發布、訂閱服務器和分發],可以看到類似下圖:
  •  
     
  •  
     
  •  
     
  •  
    我們可以在 [發布服務器和分發服務器的屬性]窗口
  •  
    ->[發布服務器]->[新增] ->[確定]
  •  
    ->[發布數據庫]->[事務]/[合並]->[確定]
  •  
    ->[訂閱服務器]->[新增] ->[確定]
  •  
    把網絡上的其它SQL Server服務器添加成為發布或者訂閱服務器.
  •  
    新增一台發布服務器的選項:
  •  
     
  •  
    我這里新建立的JIN001發布服務器是用管理員級別的數據庫用戶test連接的,
  •  
    到發布服務器的管理鏈接要輸入密碼的可選框, 默認的是選中的,
  •  
    在新建的JIN001發布服務器上建立和分發服務器FENGYU/FENGYU的鏈接的時需要輸入distributor_admin用戶的密碼
  •  
    到發布服務器的管理鏈接要輸入密碼的可選框,也可以不選,
  •  
    也就是不需要密碼來建立發布到分發服務器的鏈接(這當然欠缺安全,在測試環境下可以使用)
  •  
     
  •  
    新增一台訂閱服務器的選項:
  •  
     
  •  
     
  •  
     
  •  
     
  •  
     
  •  
    二、新建立的網絡上另一台發布服務器(例如JIN001)選擇分發服務器
  •  
     
  •  
    [歡迎使用配置發布和分發向導]->[選擇分發服務器]
  •  
     
  •  
    ->使用下列服務器(選定的服務器必須已配置為分發服務器) ->[選定服務器](例如FENGYU/FENGYU)
  •  
     
  •  
    ->[下一步]->[輸入分發服務器(例如FENGYU/FENGYU)的distributor_admin用戶的密碼兩次]
  •  
     
  •  
    ->[下一步]->[自定義配置]->[否,使用下列的默認配置]
  •  
     
  •  
    ->[下一步]->[完成]->[確定]
  •  
     
  •  
    建立一個數據庫復制發布的過程:
  •  
     
  •  
    [復制]->[發布內容]->右鍵選擇 ->[新建發布]
  •  
     
  •  
    ->[下一步]->[選擇發布數據庫]->[選中一個待發布的數據庫]
  •  
     
  •  
    ->[下一步]->[選擇發布類型]->[事務發布]/[合並發布]
  •  
     
  •  
    ->[下一步]->[指定訂閱服務器的類型]->[運行SQL Server 2000的服務器]
  •  
     
  •  
    ->[下一步]->[指定項目]->[在事務發布中只可以發布帶主鍵的表]->[選中一個有主鍵的待發布的表]
  •  
     
  •  
    ->[在合並發布中會給表增加唯一性索引和 ROWGUIDCOL 屬性的唯一標識符字段[rowguid],默認值是newid()]
  •  
     
  •  
    (添加新列將: 導致不帶列列表的 INSERT語句失敗,增加表的大小,增加生成第一個快照所要求的時間)
  •  
     
  •  
    ->[選中一個待發布的表]
  •  
     
  •  
    ->[下一步]->[選擇發布名稱和描述]->
  •  
     
  •  
    ->[下一步]->[自定義發布的屬性]->[否,根據指定方式創建發布]
  •  
     
  •  
    ->[下一步]->[完成]->[關閉]
  •  
     
  •  
    發布屬性里有很多有用的選項:設定訂閱到期(例如24小時)
  •  
     
  •  
    設定發布表的項目屬性:
  •  
     
  •  
    常規窗口可以指定發布目的表的名稱,可以跟原來的表名稱不一樣。
  •  
     
  •  
    下圖是命令和快照窗口的欄目
  •  
     
  •  
    ( SQL Server 數據庫復制技術實際上是用insert,update,delete操作在訂閱服務器上重做發布服務器上的事務操作
  •  
     
  •  
    看文檔資料需要把發布數據庫設成完全恢復模式,事務才不會丟失
  •  
     
  •  
    但我自己在測試中發現發布數據庫是簡單恢復模式下,每10秒生成一些大事務,10分鍾后再收縮數據庫日志,
  •  
    這期間發布和訂閱服務器上的作業都暫停,暫停恢復后並沒有丟失任何事務更改 )
  •  
     
  •  
    發布表可以做數據篩選,例如只選擇表里面的部分列:
  •  
     
  •  
    例如只選擇表里某些符合條件的記錄, 我們可以手工編寫篩選的SQL語句:
  •  
     
  •  
    發布表的訂閱選項,並可以建立強制訂閱:
  •  
     
  •  
     
  •  
    成功建立了發布以后,發布服務器上新增加了一個作業: [失效訂閱清除 ]
  •  
     
  •  
    分發服務器上新增加了兩個作業:
  •  
    [JIN001-dack-dack-5 ]類型[REPL快照 ]
  •  
    [JIN001-dack-3 ] 類型[REPL日志讀取器 ]
  •  
     
  •  
    上面藍色字的名稱會根據發布服務器名,發布名及第幾次發布而使用不同的編號
  •  
     
  •  
    REPL快照作業是SQL Server復制的前提條件,它會先把發布的表結構,數據,索引,約束等生成到發布服務器的OS目錄下文件
  •  
    (當有訂閱的時候才會生成, 當訂閱請求初始化或者按照某個時間表調度生成)
  •  
    REPL日志讀取器在事務復制的時候是一直處於運行狀態。(在合並復制的時候可以根據調度的時間表來運行)
  •  
     
  •  
    建立一個數據庫復制訂閱的過程:
  •  
     
  •  
    [復制]->[訂閱]->右鍵選擇 ->[新建請求訂閱]
  •  
     
  •  
    ->[下一步]->[查找發布]->[查看已注冊服務器所做的發布]
  •  
     
  •  
    ->[下一步]->[選擇發布]->[選中已經建立發布服務器上的數據庫發布名]
  •  
     
  •  
    ->[下一步]->[指定同步代理程序登錄]->[當代理程序連接到代理服務器時:使用SQL Server身份驗證]
  •  
    (輸入發布服務器上distributor_admin用戶名和密碼)
  •  
     
  •  
    ->[下一步]->[選擇目的數據庫]->[選擇在其中創建訂閱的數據庫名]/[也可以新建一個庫名]
  •  
     
  •  
    ->[下一步]->[允許匿名訂閱]->[是,生成匿名訂閱]
  •  
     
  •  
    ->[下一步]->[初始化訂閱]->[是,初始化架構和數據]
  •  
     
  •  
    ->[下一步]->[快照傳送]->[使用該發布的默認快照文件夾中的快照文件]
  •  
    (訂閱服務器要能訪問發布服務器的REPLDATA文件夾,如果有問題,可以手工設置網絡共享及共享權限)
  •  
     
  •  
    ->[下一步]->[快照傳送]->[使用該發布的默認快照文件夾中的快照文件]
  •  
     
  •  
    ->[下一步]->[設置分發代理程序調度]->[使用下列調度]->[更改]->[例如每五分鍾調度一次]
  •  
     
  •  
    ->[下一步]->[啟動要求的服務]->[該訂閱要求在發布服務器上運行SQLServerAgent服務]
  •  
     
  •  
    ->[下一步]->[完成]->[確定]
  •  
     
  •  
    成功建立了訂閱后,訂閱服務器上新增加了一個類別是[REPL-分發]作業(合並復制的時候類別是[REPL-合並])
  •  
    它會按照我們給的時間調度表運行數據庫同步復制的作業
  •  
     
  •  
    查看它的歷史記錄運行情況,例圖
  •  
    在分發服務器的[復制監視器]->[發布服務器]->[發布名稱]->[日志讀取器]->右鍵選擇->[代理程序歷史記錄], 例圖:
  •  
     
  •  
    (如果您的服務器已經用了SQL Server全文檢索服務, 請不要修改MSSQLserver和Sqlserveragent服務的local啟動。 會照成全文檢索服務不能用。請換另外一台機器來做SQL Server 2000里復制中的分發服務器。) 修改服務啟動的登錄用戶,需要重新啟動MSSQLserver和Sqlserveragent服務才能生效。
  •  
     
  •  
    四、刪除已經建好的發布和定閱可以直接用delete刪除按鈕
  •  
     
  •  
    我們最好總是按先刪定閱,再刪發布,最后禁用發布的順序來操作。
  •  
     
  •  
    如果要徹底刪去SQL Server上面的復制設置, 可以這樣操作:
  •  
     
  •  
    [復制]->右鍵選擇 [禁用發布]->[歡迎使用禁用發布和分發向導]
  •  
     
  •  
    ->[下一步]->[禁用發布]->[要在”@servername”上禁用發布]
  •  
     
  •  
    ->[下一步]->[完成禁用發布和分發向導]->[完成]
  •  
     
  •  
    我們也可以用T-SQL命令來完成復制中發布及訂閱的創建和刪除, 選中已經設好的發布和訂閱, 按屬標右鍵
  •  
    可以[生成SQL腳本]。(這里就不詳細講了, 后面推薦的網站內有比較詳細的內容)
  •  
     
  •  
    當你試圖刪除或者變更一個table時,出現以下錯誤
  •  
    Server: Msg 3724, Level16, State 2, Line 1
  •  
    Cannot dropthe table’object_name’because it isbeing used forreplication.
  •  
     
  •  
    比較典型的情況是該table曾經用於復制,但是后來又刪除了復制
  •  
     
  •  
    處理辦法:
  •  
    select*fromsysobjects wherereplinfo >’0′
  •  
     
  •  
    sp_configure ‘allow updates’, 1
  •  
    go
  •  
    reconfigurewithoverride
  •  
    go
  •  
    begintransaction
  •  
    updatesysobjects setreplinfo =’0’wherereplinfo >’0′
  •  
    committransaction
  •  
    go
  •  
    rollbacktransaction
  •  
    go
  •  
    sp_configure ‘allow updates’, 0
  •  
    go
  •  
    reconfigurewithoverride
  •  
    go
  •  
     
  •  
    疑問:
  •  
    在合並復制配置完全后,如果同步代理停止了。我要在程序中去重新啟動合並復制的同步代理。請問使用什么命令或存儲過程呢?
  •  
    解決辦法:(朱二)
  •  
    sp_start_job
  •  
    指示 SQL Server 代理程序立即執行作業。
  •  
     
  •  
    示例
  •  
    下例啟動名為 Nightly Backup的作業。
  •  
     
  •  
    USEmsdb
  •  
    EXECsp_start_job @job_name=’Nightly Backup

  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM