標籤:
本篇文章是SQL Server Replication系列的第七篇,詳細內容請參考原文。
訂閱伺服器就是複製發布項目的所有變更將傳送到的伺服器。每一個發布需要至少一個訂閱,但是一個發布可以有多個訂閱。這一篇假設你遵循了前面六篇,並且你已經配置好合并發布。
配置訂閱
為了能建立訂閱,你必須使用一個(能夠訪問訂閱伺服器和發行伺服器的)登入名稱串連到資料庫。另外,這個登入名稱至少需要是訂閱資料庫和發行集資料庫的db_owner角色的成員。
串連到發行伺服器
首先你需要在物件總管下串連到訂閱伺服器。開啟複製檔案夾,右擊"本機訂閱",選擇"建立訂閱…",7.1所示,這會開啟建立訂閱嚮導
圖7.1 建立訂閱
這裡的第一步是讓訂閱伺服器知道使用哪個發行伺服器。嚮導的第二個頁面是"發布"(圖7.2)。這裡我們需要分辨發行伺服器、發行集資料庫以及發布
圖7.2 尋找發布
發行伺服器下拉式功能表包含了你已經已連線的服務器名稱——訂閱伺服器。點擊"尋找SQL Server發行伺服器…",這會開啟一個串連對話方塊,允許你串連到發行伺服器。
圖7.3 選擇發布
在你串連到發行伺服器之後,"資料庫和發布"會顯示發行伺服器上所有的發布。圖7.3你可以看到在第六篇所建立的合并發布。
選擇訂閱類型
如果你閱讀過事務發布,你會記得不需要選擇複製類型(複製類型是在建立發布時定義的),你只需為訂閱模式選擇發送訂閱或提取訂閱,合併式複寫也是這樣的。對於事務複製發送訂閱和提取訂閱的區別是分發代理在哪執行。合併式複寫沒有使用分發代理,每一個訂閱有它自己的合并代理。對於合併式複寫,推送或提取訂閱影響合并代理在哪執行。
發送訂閱或提取訂閱
訂閱嚮導的"合并代理位置"頁(圖7.4)允許你選擇發送訂閱或提取訂閱。如果你選擇發送訂閱,合并代理在散發者上執行。
圖7.4 選擇合并代理位置
如果你選擇提取訂閱,合并代理在訂閱伺服器上執行。
讓代理在訂閱伺服器上執行,給訂閱伺服器控制同步何時發生,同時也能減少散發者的壓力。合併式複寫主要設計為"work disconnected–synchronize when connected",提取訂閱是最常用的。
在事務複製中,你可能讓一個單一發布中的某些訂閱是發送訂閱,另一些是提取訂閱。你只需多次運行嚮導建立這種模式。
訂閱類型的選擇會引起嚮導後續頁面的不同。這兩種類型我們都會示範,因此不管你是選擇哪一個,你依舊能跟隨後面的例子。
目標資料庫
在建立訂閱嚮導的下一個頁面,7.5所示
圖7.5 選擇訂閱資料庫
這裡你可以串連任意多的訂閱伺服器(通過點擊"添加訂閱伺服器"按鈕)並且為它們選擇目標資料庫。啟動嚮導的伺服器會自動添加到列表中。雖然有可能使用同一伺服器下的不同資料庫訂閱一個發布,但這個嚮導不允許你多次添加相同的訂閱伺服器。
當為訂閱伺服器選擇目標資料庫時,你可以選擇伺服器上已存在的資料庫。你也可以選擇"建立資料庫…"。這個選項會開啟建立資料庫嚮導,並允許你建立一個新的資料庫。當你選擇一個已存在的資料庫時,你需要非常小心選擇正確的資料庫。複製的初始化操作會在訂閱資料庫中刪除並重建所有的發布對象。如果你選擇了錯誤的資料庫,並且資料庫中存在和發布對象同名的對象,這些對象將會被刪除。在這個過程中不會有任何提醒資訊。
安全性
下一個嚮導頁面允許你設定用於串連到發行伺服器、散發者、訂閱伺服器和執行代理的帳戶。對於你之前選擇的每一個訂閱伺服器,你都要點擊訂閱伺服器名稱那一行末端的省略符號按鈕進行選擇。
圖7.6 合并代理安全性
在點擊省略符號按鈕後,會彈出一個新頁面讓你選擇。你的選擇會顯示在圖7.6的兩個灰色列中。依據你所選擇的推送還是提取訂閱,頁面顯示會有所不同。類似事務複製,配置合併式複寫需要大量串連資訊。在第八篇將詳細講述合併式複寫是如何運轉的,以及誰該串連到誰。現在我們需要允許合并代理串連到發行伺服器、散發者和訂閱資料庫。
發送訂閱
如果你在前面的嚮導中選擇了發送訂閱,點擊訂閱伺服器名稱那一行末端的省略符號按鈕開啟圖7.7所示對話方塊。它需要你提供一個Windows帳戶來運行合并代理。這個Windows帳戶也用於串連到發行伺服器和散發者。你可以選擇類比進程帳戶或SQL登入名稱串連到訂閱伺服器。
圖7.7 發送訂閱合并代理安全性
用於執行合并代理的帳戶需要以下許可權:
->散發資料庫中的db_owner固定資料庫角色的成員
->發行集存取清單(PAL)成員
->對快照檔案夾/共用有讀取許可權
用於串連到訂閱伺服器的帳戶需要是訂閱資料庫中的db_owner固定資料庫角色的成員
提取訂閱
如果你之前選擇了提取訂閱,圖7.8顯示了合并代理安全性。同樣你需要提供一個Windows帳戶來運行合并代理。對於訂閱代理是在訂閱伺服器上執行,因此這個Windows帳戶也用於串連到訂閱伺服器。你可以選擇類比進程帳戶或SQL登入名稱串連到發行伺服器和散發者。
圖7.8 提取訂閱合并代理安全性
用於執行合并代理的帳戶需要是訂閱資料庫中的db_owner固定資料庫角色的成員。用於串連到發行伺服器和散發者的帳戶需要以下許可權:
->發行集存取清單(PAL)成員
->Guest access to the distribution database
->對快照檔案夾/共用有讀取許可權
帳戶不需要是散發資料庫中的db_owner固定資料庫角色的成員。
如果你將上面的頁面和事務複製進行對比,你會發現合并訂閱需要額外串連發行伺服器。事務複製只提及要串連散發者和訂閱伺服器,並沒有發行伺服器。然而,事務複製中用於串連散發者的帳戶都必須在發行集存取清單(PAL)。為了在發行集存取清單,這個帳戶需要能訪問發行集資料庫。對於合併式複寫用於串連散發者的帳戶也需要是發行集存取清單的成員。因此用於串連散發者的帳戶和串連發行伺服器的帳戶是相同的。
發行集存取清單
第四篇詳細介紹了發行集存取清單。為了有資格成為PAL成員,登入名稱必須滿足這些特性:
->發行伺服器的登入名稱
->散發者的登入名稱
->對發行集資料庫具有存取權限
更多關於如何添加帳戶到PAL的內容,請參考第四篇。
一旦登入名稱被添加到PAL,它自動成為發行集資料庫中幾個額外資料庫角色的成員。不要手動移除它們。
計劃
安全性配置後是定義同步計劃。"同步計劃"嚮導頁(圖7.9),允許你分別為每一個訂閱設定連續運行、按需運行或定義計劃。事務複製中預設是連續運行,但是如果訂閱伺服器和發行伺服器之間的串連不保證,這個就沒什麼必要。如果你知道訂閱伺服器在固定的時間串連,比如說每天午夜,你就可以為同步定義一個計劃。這裡預設設定是按需運行。這個按需可以通過外部應用觸發,比如每次建立VPN串連。
圖7.9 同步計劃
初始化
下一個頁面是初始化(圖7.10),它讓你設定是否以及何時初始化訂閱資料庫。類似事務複製,在大多數情況下,你需要初始化訂閱。可以在Books Online查看何時可以跳過初始化操作。
如果你有大量資料需要複製,初始化操作需要花費一些時間,因此你需要確保訂閱伺服器與發行伺服器的串連在初始化過程中不會被中斷。如果在這選擇"首次同步時",使用者開始第一個同步時就得等待初始化完成。如果選擇"立即",在你斷開訂閱伺服器前得等待。
圖7.10 初始化訂閱
訂閱類型
前面的嚮導頁面和事務複製中的非常相似,下一個頁面(圖7.11)則是合併式複寫中特有的。它允許你選擇訂閱類型。可用選項是"伺服器","用戶端":
1、如果你想重新發布訂閱伺服器上的資料,你就得選擇"伺服器"。如果你選擇用戶端,之後你在這個訂閱資料庫上建立發布時就會出錯。
2、你可以為"伺服器"訂閱設定優先順序。當不同訂閱伺服器上有衝突時就會使用這個優先順序來解決。客訂閱先與發行伺服器同步者入選。你可以在第八篇看到解決衝突的詳細資料。
圖7.11 訂閱類型
完成配置
最後三個嚮導頁面你應該很熟悉了。讓你選擇嚮導結束時是建立訂閱還是建立指令碼檔案。你可以重新查看所有的設定,在嚮導執行時你可以看到一個spinning wheel.在所有操作完成後,你可以查看報告告訴哪些成功哪些失敗。三個頁面7.12、圖7.13、圖7.14所示
圖7.12 嚮導操作
圖7.13 查看已選選項
圖7.14 建立訂閱
保持期
保持期,在事務複製中,它是發布的一個屬性。然而,它直接影響到訂閱伺服器,因此在這裡提到。
合併式複寫中的保持期設定比事務複製中的簡單得多。
事務複製有三個保持期設定,兩個是處理散發資料庫中的交易資料,
合併式複寫只有一個設定,定義訂閱多久到期。一旦訂閱超過限制時間沒有成功同步,你就得重新初始化訂閱。這種情況下,自上次同步後在訂閱上的變更將丟失。
你可以在發布屬性對話方塊的常規版面設定這個保持期。為了得到這個頁面,你需要在物件總管下串連到發行伺服器,複製->本地發布,右擊你想修改的發布,選擇屬性。在發布屬性的常規頁(圖7.15)。你可以修改發布的描述和訂閱到期設定
圖7.15 訂閱到期
手動同步
如果你想手動同步一個訂閱,你可以使用下面步驟:
物件總管下串連到訂閱伺服器,複製->本機訂閱,右擊你想同步的訂閱,選擇查看同步狀態(圖7.16)
圖7.16 查看同步狀態
開啟圖7.17所示對話方塊,你可以啟動同步,它會顯示最後一次同步的狀態。為了初始化同步,點擊"啟動"按鈕。你也可以點擊"查看作業記錄"按鈕查看合并代理作業。
圖7.17 同步狀態對話方塊
總結
這一篇我們配置了合併式複寫訂閱。首先我們講述如何串連到發行伺服器,接著討論發送訂閱和提取訂閱的不同點。我們查看了如何選擇目標資料庫,如何設定代理安全性,以及發行集存取清單。我們學習了如何計劃同步事件,如何選擇訂閱初始化選項。介紹了訂閱類型以及衝突優先順序設定。最後討論訂閱到期設定。
如果你遵循所有步驟,現在你應該有一個合併式複寫。你可以測試你的複製情境,通過在發行伺服器和/或訂閱伺服器修改資料,查看它們是否被複製。記住,你需要手動同步或者等待同步計劃發生(依賴"同步計劃"頁的設定),之後你才能看到在複製的另一邊發生資料變更。
下一篇將據探討合併式複寫工作機制。還會介紹如何處理合併式複寫中的衝突,並引入衝突解決方案程式。
第七篇 Replication:合併式複寫-訂閱