一、背景
在復制的運用場景中,事務發布是使用最為廣泛的,我遇到這樣一個場景:在Task數據庫中有Basic與Group兩個表,需要提供這兩個表的部分字段給其它程序讀取放入緩存,程序需要比較及時的獲取到這些數據,作為DBA你需要從權限和性能控制的角度出發,我采用了SQL Server的事務復制技術和timestamp,下面只講述事務復制的搭建過程;
二、實現過程
(一) 環境信息
系統環境:Windows Server 2008 + SQL Server 2008 R2
發布服務器:192.168.1.151,服務器名稱:USER-H2B2A89PEK
分發服務器:與發布服務器同一台機器
訂閱服務器:192.168.1.152,服務器名稱:USER-FJMO8L052U
發布數據庫:Task
訂閱數據庫:TaskSiteInfo
數據庫帳號:ReplicationUser/ ReplicationPassword
(二) 搭建步驟
A. 發布服務器配置
首先在發布數據庫和訂閱數據庫上創建相同的帳號和密碼(ReplicationUser/ ReplicationPassword),並且設置Task數據庫的安全對象,設置這樣的帳號的目的就是為了和程序連接到數據庫的帳號區分開,可以做權限上的控制,方便問題的排查;
--更改安全對象的所有權
ALTER AUTHORIZATION ON DATABASE::[Task] TO [ReplicationUser]
在E盤目錄下創建文件夾:E:\ReplData,並設置這個文件夾為共享目錄,共享用戶為barefootadmin;
(Figure1_1:文件夾權限)
這裡需要設置SQL Server Agent登陸帳號為上面文件夾訪問用戶barefootadmin;
(Figure1_2:SQL Server Agent登陸帳號)
(Figure2:分發服務器)
如果你設置快照文件夾路徑為:E:\ReplData,即使你的發布服務器本身就是分發服務器,如果訂閱服務器是另外一台機器,那麼在請求(Pull)訂閱(如果是推送(Push)訂閱就沒有這個限制)模式下訂閱代理是無法訪問到這個快照文件的;除非你發布服務器、分發服務器和訂閱服務器都是同一台機器;你應該設置快照文件夾路徑為:\\USER-H2B2A89PEK\ ReplData;
(Figure3:快照文件夾)
(Figure4:數據庫)