2008年4月20日 星期日

Microsoft SQL Server 2005複寫機制實作

Microsoft SQL Server 2005複寫機制實作

軟體環境:
Windows Server 2003 R2中文標準版 with SP2
SQL Server 2005中文標準版 with SP2,以預設具名實體安裝
均以Microsoft Update更新至最新版本

設定值:

主機名稱:SERVER1
IP位址:192.168.5.100 / 255.255.255.0
不加入網址,採預設的工作群組「WORKGROUP」
(Windows帳號)
administrator 密碼:1
agent 密碼:11 新建,加入administrators群組
(SQL Server帳號)
sa 密碼:111 取消強制執行密碼原則
主機名稱:SERVER2
IP位址:192.168.5.200 / 255.255.255.0
不加入網址,採預設的工作群組「WORKGROUP」
(Windows帳號)
administrator 密碼:2
agent 密碼:22 新建,加入administrators群組
(SQL Server帳號)
sa 密碼:222 取消強制執行密碼原則

設定SQL Agent使用本機agent作為服務帳號(以SERVER1為例):
1. 啟動「SQL Server組態管理員」

2. 在SQL Server Agent(MSSQLSERVER)上按右鍵à「內容」

3. 在內容中設定使用「這個帳戶」,並填入以下內容:
帳戶名稱:.\agent
密碼:11
確認密碼:111

4. 填好後按確定,會出現以下視窗,按「是」
5. 該服務會重新啟動,登入身分為agent

6. 同方式設定SERVER2

註:從「SQL Server組態管理員」中設定SQL Server Agent的啟動帳戶,與從「系統管理工具」中的「服務」設定,最大的差別是會同時將該帳號加入SQLServer2005SQLAgentUser$ComputerName$InstanceName安全群組。若不如此,則在設定複寫時,記錄讀取器代理程式(Log Reader Agent)在執行時會產生問題。
http://support.microsoft.com/kb/911305/en-us

設定agent帳戶在SQL Server上的權限
1. 開啟Microsoft SQL Server Management Agent,並以Windows驗證登入SERVER1

2. 展開「安全性」à「登入」,並在右邊空白處按右鍵à「新增登入」

3. 輸入「SERVER1\agent」。並選擇預設資料庫為後續要用來複寫的資料庫「Adventure Works」(非必要)。

4. 在「伺服器角色」中,勾選「sysadmin」

5. 在「使用者對應」中勾選「AdventureWorks」,並勾選下方「資料庫角色成員資格」中的「db_owner」。

設定發行(Publisher)
1. 於「複寫」上按右鍵à「發行者屬性」

2. 於「發行者資料庫」中,對AdventureWorks勾選「交易式」。

設定散發(Distributor)
1. 於「複寫」上按右鍵à「設定散發」

2. 出現「設定散發精靈」視窗,按「下一步」

3. 要設定SERVER1為散發者(Distributor),直接按「下一步」

4. 預設快照集檔案會放置於C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Repldate,因為要透過網路進行複寫,因此改用分享資料夾的方式,如\\SERVER1\Repldata。註:該資料夾至少必須給快照集代理程式(Snapshot Agent)寫入(write)的權限及散發代理程式(Distributor Agent)讀取(read)的權限。

5. 設定散發資料庫,採預設值即可。

6. 設定發行者(Publisher),採預設的SERVER1即可。註:本例中發行者與散發者均位於SERVER1上。

7. 勾選「設定散發」與「產生含有設定散發之步驟的指令碼檔案」(非必要)。

8. 設定指令碼存放的位置與檔名。

9. 完成散發的設定
10. 完成設定

啟用複寫監視器
1. 在「複寫」上按右鍵à「啟用複寫監視器」

2. 可看到SERVER1已設定複寫,但尚未建立任何發行集(publication)與訂閱(subscribe)

設定發行集(publication
1. 於「複寫」à「本機發行集」上按右鍵à「新增發行集」

2. 出現「新增發行集精靈」,按「下一步」

3. 選擇要做為發行集的資料庫,本例中為AdventureWorks。註:一個發行集僅能包含一個資料庫中的部份或全部。

4. 本例中發行集類型選擇「交易式發行集」
註:
交易式發行集:
訂閱者接收到已發行資料的初始快照集之後,發行者就會將交易資料流傳送給訂閱者。

具有可更新訂閱的交易式發行集:
SQL Server 訂閱者接收到已發行資料的初始快照集之後,發行者就會將交易資料流傳送給 SQL Server 訂閱者。來自訂閱者端的交易會套用到發行者端。

合併式發行集:
訂閱者接收到已發行資料的初始快照集後,發行者和訂閱者即可獨立更新已發行資料。變更會定期合併。Microsoft SQL Server Compact Edition 僅能訂閱合併式發行集。

5. 選擇要做為發行集的發行項,可為資料表或資料表中特定欄位。註:資料表必須含有主索引鍵。

6. 設定篩選條件(非必要),可按「加入」,以WHERE陳述式進行篩選

7. 勾選「立即建立快照集,並保留快照集為可使用狀態,以初始化訂閲」。

8. 設定代理程式安全性,按「安全性設定」

9. 設定快照集代理程式安全性使用SERVER1\agent執行

10. 設定「記錄讀取器代理」設定與「快照集代理程式」相同。

11. 勾選「建立發行集」與「產生具建立發行集步驟的指令碼檔案」(非必要)

12. 設定指令檔存放位置與檔名

13. 設定發行集名稱。本例中為「FirstPublication」

14. 完成建立發行集
15. 建立完成的發行集會出現在「複寫」à「本機發行集」下,中括號中為發行集所涵括的資料庫,後為發行集名稱。本例中為[AdventureWorks]:FirstPublication

啟用複寫監視器
1. 於複寫監視器中可看到一個發行集,狀態為確定。

2. 於發行集中,查看「警告與代理程式」中,「快照集代理程式」的狀態為「已完成」或「正在執行」,「記錄讀取器代理程式」的狀態為「已完成」

設定「訂閱」(Subscriber)
1. 於發行集上按右鍵à「新增訂閱」

2. 出現「新增訂閱精靈」

3. 選擇發行集

4. 設定發送訂閱(Push)或提取訂閱(Pull)。本例中為發送訂閱。

5. 設定訂閱者,按「加入訂閱者」,選擇「加入SQL Server訂閱者」

6. 出現設定連接的畫面,輸入SERVER,sa,並用SERVER2上sa的密碼222

7. 選擇「訂閱資料庫」中的<新增資料庫>

8. 於「新增資料庫」畫面中,輸入資料庫名稱,本例中為「TEST」,並按確定

9. 按下一步後,設定散發代理程式安全性,按「…」

10. 設定以SQL Server Agent服務帳號(agent)執行散發代理程式,並設定以SERVER2上sa,及其密碼222連接至訂閱者。

11. 安全性設定完成

12. 設定訂閱排程
13. 依需要設定排程

14. 選擇立即初始化
15. 勾選「建立訂閱」與「產生含有建立訂閱之步驟的指令碼檔案」(非必要)

16. 設定指令檔存放位置與檔名
17. 完成設定
18. 建立訂閱完成

19. 設定完成的訂閱位於發行集下,前中括號中為訂閱的伺服器,後中括號中為所抄寫的目的資料庫。本例中為[SERVER2].[TEST]

啟動複寫監視器
1. 發行集中目前有一個訂閱,且狀態是「正在執行」

2. 查看發行者到散發者歷程記錄,狀態為「正在執行」

3.查看散發者到訂閱者歷程記錄,可看到複寫的過程正在進行。

4. 複寫完畢,訊息為「沒有可用的複寫交易」

沒有留言: