本文轉載:http://chaoyouzhuo.blog.163.com/blog/static/126376001201173092514498/
參考文章:http://www.cnblogs.com/gbmf/archive/2009/06/04/1496013.html
如果選擇的是“快照發布”:則必須在發布服務器需要設置代理時間計划,訂閱服務器可以不用設置代理時間計划。
如果選擇的是“事務發布”;則發布服務器和訂閱服務器不需要設置代理時間計划,這樣幾乎可以實現兩台數據庫服務器的數據實時同步。
訂閱服務器有兩種方式。一種是推式訂閱,一種是拉式訂閱(發布服務器上的快照路徑必須是UNC路徑共享路徑,且訂閱服務器的快照路徑一樣)。
(我做了一下,在配置訂閱的時候,配置為事務訂閱(發布服務器中對應的表必須有主鍵),延遲為2、3秒,而配置為快照訂閱(立刻執行),則只同步一次,后來發布服務器上的數據更新沒有在訂閱服務器上有對應的更新;配置為快照訂閱(自定義執行,每天的0:00:00執行),則每天更新一次。我都是采用推送訂閱方式的。)
1 名詞解釋<
xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office"
/>
ü 發布服務器
發布服務器是一種數據庫實例,它通過復制向其他位置提供數據。發布服務器可以有一個或多個發布,每個發布定義一組要復制的具有邏輯關系的對象和數據。
ü 分發服務器
分發服務器也是一種數據庫實例,它起着存儲區的作用,用於復制與一個或多個發布服務器相關聯的特定數據。 每個發布服務器都與分發服務器中的單個數據庫(稱作分發數據庫)相關聯。 分發數據庫存儲復制狀態數據和有關發布的元數據,並且在某些情況下為從發布服務器向訂閱服務器移動的數據起着排隊的作用。 在很多情況下,一個數據庫服務器實例充當發布服務器和分發服務器兩個角色。 這稱為“本地分發服務器”。 當發布服務器和分發服務器按各自的數據庫服務器實例配置時,把分發服務器稱為“遠程分發服務器”。
ü 訂閱服務器
訂閱服務器是接收復制數據的數據庫實例。 訂閱服務器可以接收來自多個發布服務器和發布的數據。 根據所選的復制類型,訂閱服務器還可以將數據更改傳遞回發布服務器或者將數據重新發布到其他訂閱服務器。
ü 項目
項目用於標識發布中包含的數據庫對象。 一次發布可以包含不同類型的項目,包括表、視圖、存儲過程和其他對象。 當把表作為項目發布時,可以用篩選器限制發送到訂閱服務器的數據的列和行。
ü 發布
發布是一個數據庫中的一個或多個項目的集合。 將多個項目分組成一個發布,使得更便於指定一組作為一個單元復制的、具有邏輯關系的數據庫對象和數據。
ü 訂閱
訂閱是把發布副本傳遞到訂閱服務器的請求。 訂閱定義將接收的發布和接收的時間、地點。 有兩種類型的訂閱:推送訂閱和請求訂閱。 有關推送訂閱和請求訂閱的詳細信息,請參閱訂閱發布。
2 配置分發和發布
若要創建發布,請提供下列信息:
· 分發服務器。
· 快照文件的位置。
· 發布數據庫。
· 要創建的發布的類型(快照發布、事務發布、具有可更新訂閱的事務發布或合並發布)。
· 包含在發布中的數據和數據庫對象(項目)。
· 用於所有發布類型的靜態行篩選器和列篩選器,以及用於合並發布的參數化行篩選器和聯接篩選器。
· 快照代理計划。
· 運行下列代理時使用的帳戶:所有發布的快照代理;所有事務發布的日志讀取器代理;允許更新訂閱的事務發布的隊列讀取器代理。
· 發布的名稱和說明。
2.1 配置分發
1. 在 Microsoft SQL Server Management Studio 中,連接到將要作為分發服務器的服務器(許多情況下,發布服務器和分發服務器是同一服務器),然后展開服務器節點。
注意: 如果在安裝完SQL Server 2008后修改過計算機名,則可能會連不上服務器,可用select@@servername和selectserverproperty('servername')進行驗證。
2. 右鍵單擊“復制”文件夾,然后單擊“配置分發”。
3. 隨着配置分發向導執行下列操作:
· 選擇分發服務器。
? 若要使用本地分發服務器,請選擇:“‘<服務器名稱>’將充當自己的分發服務器;SQL Server 將創建分發數據庫和日志”。
? 若要使用遠程分發服務器,請選擇“使用以下服務器作為分發服務器”,然后選擇一個服務器。
注意:必須已將該服務器配置為分發服務器,且使發布服務器能夠使用此分發服務器。就是在創建該分發服務器時將本服務器添加到該分發服務器的發布服務器中。可以通過:在配置分發向導中啟用發布服務器 和 在“分發服務器屬性”對話框中啟用發布服務器 兩種分發實現。
如果選擇遠程分發服務器,則必須在“管理密碼”頁上輸入從發布服務器連接到分發服務器的密碼。 此密碼必須與在遠程分發服務器上啟用發布服務器時所指定的密碼相匹配。
· 指定根快照文件夾(適用於本地分發服務器)。 快照文件夾只是指定共享的目錄。對此文件夾執行讀寫操作的代理必須對其具有足夠的訪問權限。 每個使用此分發服務器的發布服務器都在根文件夾下創建一個文件夾,而每個發布則在發布服務器文件夾下創建用於存儲快照文件的文件夾。
· 指定分發數據庫(適用於本地分發服務器)。 分發數據庫存儲了事務復制的所有復制和事務類型的元數據和歷史記錄數據。
· 還可以讓其他發布服務器使用該分發服務器(可選)。 如果其他發布服務器能夠使用分發服務器,則必須在“分發服務器密碼”頁上輸入從這些發布服務器連接到分發服務器的密碼。
2.2 創建發布和項目
1. 在 Microsoft SQL Server Management Studio 中連接到發布服務器,然后展開服務器節點。
2. 展開“復制”文件夾,再右鍵單擊“本地發布”文件夾。
3. 單擊“新建發布”。
4. 按照新建發布向導中的頁完成以下任務:
· 如果尚未在服務器上配置分發,請指定分發服務器。具體方法見【2.1配置分發】
如果在“分發服務器”頁上指定將發布服務器用作其自己的分發服務器(本地分發服務器),而未將服務器配置為分發服務器,則新建發布向導將配置該服務器。 在“快照文件夾”頁中指定分發服務器的快照文件夾。 快照文件夾只是指定為共享的一個目錄。對此文件夾中執行讀寫操作的代理必須對其具有足夠的權限才能訪問它。
如果指定另一台服務器作為分發服務器,則必須在“管理密碼”頁上輸入密碼來連接發布服務器和分發服務器。 此密碼必須與在遠程分發服務器上啟用發布服務器時所指定的密碼一致。
· 選擇發布數據庫。
· 選擇發布類型。
ü 快照復制:快照復制將數據以特定時刻的瞬時狀態分發,而不監視對數據的更新。發生同步
時,將生成完整的快照並將其發送到訂閱服務器。
當符合以下一個或多個條件時,使用快照復制本身是最合適的:
? 很少更改數據。
? 在一段時間內允許具有相對發布服務器已過時的數據副本。
? 復制少量數據。
? 在短期內出現大量更改。
ü 事務復制:事務復制通常用於服務器到服務器環境中,
在以下各種情況下適合采用事務復制:
? 希望發生增量更改時將其傳播到訂閱服務器。
? 從發布服務器上發生更改,至更改到達訂閱服務器,應用程序需要這兩者之間的滯后時間較短。
? 應用程序需要訪問中間數據狀態。 例如,如果某一行更改了五次,事務復制將允許應用程序響應每次更改(例如,激發觸發器),而不只是響應該行最終的數據更改。
? 發布服務器有大量的插入、更新和刪除活動。
? 發布服務器或訂閱服務器不是 SQL Server 數據庫(例如,Oracle)。
ü 合並復制:並復制通常用於服務器到客戶端的環境中。
合並復制適用於下列各種情況:
? 多個訂閱服務器可能會在不同時間更新同一數據,並將其更改傳播到發布服務器和其他訂閱服務器。
? 訂閱服務器需要接收數據,脫機更改數據,並在以后與發布服務器和其他訂閱服務器同步更改。
? 每個訂閱服務器都需要不同的數據分區。
? 可能會發生沖突,並且在沖突發生時,您需要具有檢測和解決沖突的能力。
? 應用程序需要最終的數據更改結果,而不是訪問中間數據狀態。 例如,如果在訂閱服務器與發布服務器進行同步之前,訂閱服務器上的行更改了五次,則該行在發布服務器上僅更改一次來反映最終數據更改(也就是第五次更改的值)。
· 指定要發布的數據和數據庫對象;(可選)篩選來自表項目的列,並設置項目屬性。
· 可選擇篩選來自表項目的行。
· 設置快照代理調度。
· 指定運行下列復制代理和進行連接的憑證:
· 創建發布。
3 創建訂閱
訂閱是對發布中的數據和數據庫對象的副本的請求。訂閱定義將接收哪個發布以及接收的時間和位置。創建訂閱后,將無法更改其類型。
兩種訂閱方式的標比較:
訂閱類型 |
特征 |
使用時間 |
推送訂閱 |
發布服務器將更改傳播到訂閱服務器,而無需訂閱服務器發出請求。更改可以按需、連續地或按照計划推送到訂閱服務器。 分發代理或合並代理在分發服務器上運行。 |
1.通常,數據將連續同步或按照經常重復執行的計划同步。 2.發布要求數據近似實時地移動。 3.分發服務器上較高的處理器開銷不會影響性能。 4.通常與快照和事務復制一起使用。 |
請求訂閱 |
訂閱服務器請求在發布服務器上所做的更改。 請求訂閱允許訂閱服務器上的用戶確定同步數據更改的時間。 分發代理或合並代理在訂閱服務器上運行。 |
1.數據通常按需或按計划同步,而非連續同步。 2.發布具有大量訂閱服務器,並且/或在分發服務器上運行所有代理會消耗大量資源。 3.訂閱服務器是自主的、斷開連接的和/或移動的。訂閱服務器將確定連接和同步更改的時間。 4.通常與合並復制一起使用。 |
若要創建訂閱,請提供下列信息:
· 發布的名稱。
· 訂閱服務器和訂閱數據庫的名稱。
· 分發代理或合並代理是在分發服務器上運行還是在訂閱服務器上運行。
· 分發代理或合並代理是連續運行、按照計划運行,還是僅按需運行。
· 快照代理是否應為訂閱創建初始快照,以及分發代理或合並代理是否應在訂閱服務器上應用該快照。
· 將運行分發代理或合並代理的帳戶。
· 對於合並復制,還要提供訂閱類型: 服務器或客戶端。
3.1 創建推送訂閱
使用新建訂閱向導,在發布服務器或訂閱服務器上創建推送訂閱。 按照向導中的頁的指示執行下列操作:
· 指定發布服務器和發布。
· 選擇運行復制代理的位置。 對於推送訂閱,根據發布類型的不同,在“分發代理位置”頁或“合並代理位置”頁上選擇“在分發服務器上運行所有代理(推送訂閱)”。
· 指定訂閱服務器和訂閱數據庫。
· 指定復制代理建立連接所用的登錄名和密碼:
對於快照發布和事務性發布的訂閱,在“分發代理安全性”頁上指定憑據。
對於合並發布的訂閱,在“合並代理安全性”頁上指定憑據。
· 指定同步計划和初始化訂閱服務器的時間。
· 指定合並發布的其他選項: 訂閱類型以及用於參數化篩選的值。
· 指定允許更新訂閱的事務性發布的其他選項: 訂閱服務器是立即在發布服務器上提交更改還是將它們寫入隊列、用於從訂閱服務器連接到發布服務器的憑據。
· 還可以編寫訂閱的腳本。
3.1.1 從發布服務器創建推送訂閱
1. 在 Microsoft SQL Server Management Studio 中,連接到發布服務器,然后展開服務器節點。
2. 展開“復制”文件夾,再展開“本地發布”文件夾。
3. 右鍵單擊要為其創建一個或多個訂閱的發布,然后單擊“新建訂閱”。
4. 完成新建訂閱向導中的頁。
3.1.2 從訂閱服務器創建推送訂閱
1. 在 SQL Server Management Studio 中,連接到訂閱服務器,然后展開服務器節點。
2. 展開“復制”文件夾。
3. 右鍵單擊“本地訂閱”文件夾,然后單擊“新建訂閱”。
4. 從新建訂閱向導的“發布”頁上的“發布服務器”下拉列表中,選擇“<查找 SQL Server 發布服務器>”或“<查找 Oracle 發布服務器>”。
5. 在“連接到服務器”對話框中,連接到發布服務器。
6. 在“發布”頁上,選擇一個發布。
7. 完成新建訂閱向導中的頁。
3.2 創建請求訂閱
使用“新建訂閱向導”在發布服務器或訂閱服務器中創建請求訂閱。按照向導中的頁進行操作:
· 指定發布服務器和發布。
· 選擇復制代理運行的位置。 對於請求訂閱,根據發布類型的不同,請在“分發代理位置”頁或“合並代理位置”頁上選擇“在其訂閱服務器上運行每個代理(請求訂閱)”。
· 指定訂閱服務器和訂閱數據庫
· 指定復制代理建立連接所用的登錄名和密碼:
如果是對快照和事務發布的訂閱,請在“分發代理安全性”頁上指定憑據。
如果是對合並發布的訂閱,請在“合並代理安全性”頁上指定憑據。
· 指定同步計划和初始化訂閱服務器的時間。
· 指定合並發布的其他選項: 訂閱類型;參數化篩選值;如果發布啟用了 Web 同步,則還需指定要通過 HTTPS 同步的信息。
· 指定允許更新訂閱的事務發布的其他選項: 訂閱服務器是應該立即在發布服務器上提交更改還是將它們寫入隊列;用於從訂閱服務器連接到發布服務器的憑據。
· 還可以編寫訂閱的腳本。
3.2.1 從發布服務器創建請求訂閱
1. 連接到 Microsoft SQL Server Management Studio 中的發布服務器,然后展開服務器節點。
2. 展開“復制”文件夾,然后展開“本地發布”文件夾。
3. 右鍵單擊要為其創建訂閱的發布,然后單擊“新建訂閱”。
4. 完成新建訂閱向導中的頁。
3.2.2 從訂閱服務器創建請求訂閱
1. 連接到 SQL Server Management Studio 中的訂閱服務器,然后展開服務器節點。
2. 展開“復制”文件夾。
3. 右鍵單擊“本地訂閱”文件夾,然后單擊“新建訂閱”。
4. 在新建訂閱向導的“發布”頁上,從“發布服務器”下拉列表中選擇“<查找 SQL Server 發布服務器>”或“<查找 Oracle 發布服務器>”。
5. 在“連接到服務器”對話框中連接到發布服務器。
6. 在“發布”頁上選擇一個發布。
7. 完成新建訂閱向導中的頁。