合并釋出(複制)通常也是從釋出資料庫對象和資料的報表快照開始。并用觸發器跟蹤在釋出伺服器和訂閱伺服器中所做的後續資料更改和架構修改。訂閱伺服器與釋出伺服器在連接配接到網絡時進行同步,并交換自上次同步以來釋出伺服器和訂閱伺服器間發生變化的所有行。允許站點對已經複制的資料進行匿名更改,并且在晚些時候合并更改和更加需要解決沖突。(資料合并可能導緻主鍵沖突)
适用的情況:
(1) 多個定語伺服器可能會在不同的時間更新同一資料,這些更改将傳播到釋出伺服器和其他訂閱伺服器。
(2) 訂閱伺服器需要接手資料,脫機更改資料,并且在以後與釋出伺服器和其他定語伺服器同步更改
(3) 訂閱伺服器都需要不同的資料分區
(4) 可能會發生沖突,如果發生沖突,需要具備檢測和解決沖突的能力
(5) 應用程式需要最終的更改結果,而不是通路中間的資料狀态。
工作原理:
合并複制允許不同的站點自主工作,然後将更新合并成一個統一的結果,由于更新是在多個伺服器中進行,是以統一資料可能由釋出伺服器和多個定語伺服器進行了更新,可能會出現沖突,合并複制提供解決沖突方案。在訂閱伺服器中更新資料時,首先将資料傳播到釋出伺服器,然後再傳播到其他訂閱伺服器。如果使用立即更新,将使用兩階段送出協定立即傳播更改。如果使用排隊更新,更改将存儲在隊列中;當網絡連接配接可用時,再在釋出伺服器中異步應用排隊事務。由于更新異步傳播至釋出伺服器,是以釋出伺服器或另一台訂閱伺服器有可能更新同一資料,而在應用更新時會發生沖突。将根據建立釋出時設定的沖突解決政策檢測和解決沖突。
兩種可更新訂閱:
(1) 立即更新。必須連接配接釋出伺服器和訂閱伺服器才能在訂閱伺服器中更新資料。
(2) 排隊更新。不必連接配接釋出伺服器和訂閱伺服器即可在訂閱伺服器中更新資料。可以在訂閱伺服器或釋出伺服器脫機時進行更新最近做資料庫同步,看似非常簡單的東西,可是問題一個接一個,或許我們在本機做測試,資料量小的時候根本查不到問題所在,在正式環境中每個因素都要考慮到,這裡将遇到的問題以及操作步驟與大家分享一下,希望對大家有幫助!
(一) 資料庫同步的必要性
1. 資料庫實時備份同步,在資料庫伺服器出現問題時可以有正常工作時的備份
2. 資料庫實時備份同步,在資料庫通路壓力過大時,可以用來做負載均衡
3. 資料庫實時備份,資料庫伺服器可以無間斷的無損失遷移
4. 當資料庫遭受攻擊或者伺服器出現問題可以啟用同步機器應急
5. 可以實作資料庫之間的合并
(二) 資料庫同步前提條件
1. 資料庫故障還原模式必須是完全還原模型

2. 所有被同步的資料庫都必須有主鍵
資料庫被同步的資料表必須有主鍵,因為大家都習慣使用自增列作為主鍵,這裡不一定要指定主鍵為自增列。主鍵主要用于事務複制
3. 使用計算機名來注冊伺服器
釋出伺服器,分發伺服器和訂閱伺服器都必須使用計算機名稱來進行SQLServer伺服器的注冊。在企業管理器裡面注冊伺服器,如果需要 作為釋出伺服器,分發服務區和訂閱伺服器都必須使用伺服器名稱進行注冊,不得使用IP位址以及别人注冊,也不得使用帶有端口号
4. SQL Server必須啟動代理服務
SQLServer必須啟動代理服務,且代理伺服器必須以本地機器的賬号運作
(三) SQL Server資料庫同步相關定義
(1). 複制簡介
複制是将資料或資料庫對象從一個資料庫複制和分發到另外一個資料庫,并進行資料同步,進而使源資料庫和目标資料庫保持一緻。使用複制,可以在區域網路和廣域網、撥接上網、無線連接配接和 Internet 上将資料分發到不同位置以及分發給遠端或移動使用者。
一組SQL SERVER2005複制有釋出伺服器、分發伺服器、訂閱服伺服器組成,他們之間的關系類似于書報行業的報社或出版社、郵局或書店、讀者之間的關系。以報紙發行為例說明,釋出伺服器類似于報社,報社提供報刊的内容并印刷,是資料源;分發伺服器相當于郵局,他将各報社的報刊送(分發)到訂戶手中;訂閱伺服器相當于訂戶,從郵局那裡收到報刊。在實際的複制中,釋出伺服器是一種資料庫執行個體,它通過複制向其他位置提供資料,分發伺服器也是一種資料庫執行個體,它起着存儲區的作用,用于複制與一個或多個釋出伺服器相關聯的特定資料。每個釋出伺服器都與分發伺服器上的單個資料庫(稱作分發資料庫)相關聯。分發資料庫存儲複制狀态資料和有關釋出的中繼資料,并且在某些情況下為從釋出伺服器向訂閱伺服器移動的資料起着排隊的作用。在很多情況下,一個資料庫伺服器執行個體充當釋出伺服器和分發伺服器兩個角色。這稱為“本地分發伺服器”。訂閱伺服器是接收複制資料的資料庫執行個體。一個訂閱伺服器可以從多個釋出伺服器和釋出接收資料。
(2). 複制類型
(3) 快照釋出
快照複制就是在某一時刻對出版資料庫進行一次照相,生成一個描述釋出資料的瞬時狀态的靜态檔案,然後再規定的時間複制到訂閱資料庫
快照釋出特點:
(1)Â 不需要實時監控和跟蹤釋出資料庫發生的資料庫變化
(2)Â 複制的内容不是Insert,Update,Delete語句資料,也不是被修改的資料
(3)Â 對網絡資源要求較高,而且要保證傳輸的可靠性
(4)Â 對訂閱資料庫進行一次重新整理,将釋出資料庫完全重新複制一份到訂閱資料庫
适用條件:
(1)Â 很少有資料更改
(2)Â 在一段時間内允許具有相對釋出伺服器已過時的資料副本
(3)Â 複制少量資料
(4)Â 在短期内出現大量更改
工作機制:
(1)Â 釋出伺服器,将要釋出的資料庫整個做一個快照
(2)Â 訂閱伺服器的快照代理程式把釋出伺服器的快照讀取過來,放在本地的快照檔案夾内訂閱伺服器的釋出代理程式把快照檔案夾中的快照釋出到訂閱伺服器上。曆史記錄和快照記錄在分發伺服器中
(4) 事務釋出
适用環境:
(1)Â 希望發生增量更改時将其傳播到訂閱伺服器。
(2)Â 從釋出伺服器上發生更改,至更改到達訂閱伺服器,應用程式需要這兩者之間的滞後時間較短
(3)Â 應用程式需要通路中間資料狀态,而不隻是響應該行最終的資料更改.
(4)Â 釋出伺服器有大量的插入、更新和删除活動釋出伺服器或訂閱伺服器不是
SQL Server 資料庫
(5) 具有可更新訂閱的事務釋出
在訂閱伺服器中更新資料時,首先将資料傳播到釋出伺服器,然後再傳播到其他訂閱伺服器。如果使用立即更新,将使用兩階段送出協定立即傳播更改。如果使用排隊更新,更改将存儲在隊列中;當網絡連接配接可用時,再在釋出伺服器中異步應用排隊事務。由于更新異步傳播至釋出伺服器,是以釋出伺服器或另一台訂閱伺服器有可能更新同一資料,而在應用更新時會發生沖突。将根據建立釋出時設定的沖突解決政策檢測和解決沖突。
(1)
立即更新。必須連接配接釋出伺服器和訂閱伺服器才能在訂閱伺服器中更新資料。
(2)
排隊更新。不必連接配接釋出伺服器和訂閱伺服器即可在訂閱伺服器中更新資料。可以在訂閱伺服器或釋出伺服器脫機時進行更新
(6) 合并釋出
(1)Â 多個定語伺服器可能會在不同的時間更新同一資料,這些更改将傳播到釋出伺服器和其他訂閱伺服器。
(2)Â 訂閱伺服器需要接手資料,脫機更改資料,并且在以後與釋出伺服器和其他定語伺服器同步更改
(3)Â 訂閱伺服器都需要不同的資料分區
(4)Â 可能會發生沖突,如果發生沖突,需要具備檢測和解決沖突的能力
(5)Â 應用程式需要最終的更改結果,而不是通路中間的資料狀态。
合并複制允許不同的站點自主工作,然後将更新合并成一個統一的結果,由于更新是在多個伺服器中進行,是以統一資料可能由釋出伺服器和多個定語伺服器進行了更新,可能會出現沖突,合并複制提供解決沖突方案。