背景描述 發(fā)布服務器A: (遠程端) , 數據庫服務名: GUANWANG1 訂閱服務器B: (本機) , 數據庫服務名: PC-LLRDBA 需要從服務器A中數據庫發(fā)布,然后在B中訂閱A發(fā)布的數據庫; 第一步:準備工作 準備工作1: 配置機器名和數據庫服務名一致 先檢查A,B中的機器名和數據庫服務名是否一致,這個很重要! 查看方法: 1.檢查SQL Server 的服務器名稱 use mastergoselect @@servernameselect serverproperty('servername') (提示:可左右滑動代碼) 如果查出來的兩個名字不一樣,那就需要把他們的名字改成一樣的,方法如下: 2.刪除所有之前配置的publishers('old_server_name'為之前的服務名) select * from msdb.dbo.MSdistpublishersDELETE FROM msdb.dbo.MSdistpublishersselect * from msdb.dbo.MSdistpublishersexec sp_droplinkedsrvlogin 'old_server_name',nullexec sp_dropserver 'old_server_name', 'droplogins' 執(zhí)行完后,,重啟SQL Server服務 3.配置計算機名與服務名一致 USE masterGOif serverproperty('servername') <> @@servername begin declare @server sysname set @server = @@servername exec sp_dropserver @server = @server set @server = cast(serverproperty('servername') as sysname) exec sp_addserver @server = @server , @local = 'LOCAL' end 4.查看服務名 sp_helpserver 準備工作2: 配置數據庫服務器名稱的別稱 服務器名稱處使用登陸別稱 因為數據庫發(fā)布和訂閱,不能用ip登陸,必須用服務名登陸 方法之一是改服務器的登陸別稱! 首先在本機B配置連接服務器A的登陸別稱: 先在【開始】-->【所有程序】中打開【SQL Server配置管理器】: 在【SQL Native Client 10.0配置(32位)】中的別名中配置,如圖: 這里的別名必須和服務器B的服務器名一致也就是GUANWANG1,實際的按照自己的名字改動; 端口號是:1433 服務器是對應的服務器機器的IP地址 協(xié)議是TCP/IP 同理,在下面的【SQL Native Client 10.0配置】中也一樣配置 修改服務器別名 然后在服務器A中也要配置訪問本機B的別稱,這一步不能少,否則后面本地訂閱的時候會失敗并報錯,'進程無法連接到 Subscriber“PC-LLRDBA”,。 ' 切記,這里是雙向的,當初我查了好久才想起來,服務端也要配置這個...... 具體的方法同上:注意別名是本機B的服務名PC-LLRDBA, IP是本機的IP,實在不知道在cmd下config一下就有了! 修改服務器別名 準備工作好了后,就進行第二步發(fā)布 第二步:發(fā)布 登陸服務器A數據庫,用別名登陸: 在【復制】-->【本地發(fā)布】中右鍵【新建發(fā)布】 新建發(fā)布 選擇你要發(fā)布的數據庫 選擇發(fā)布類型:(具體選哪種,自己百度下各種的差異),我這里選事務發(fā)布 可以選擇發(fā)布的對象(表,存儲過程,視圖等等),也可以選擇部分內容,點開勾選就行了 如果沒有特別篩選的,就直接下一步(比如說我只要同步Order表中2014年以后的數據,那么你可以點添加,增加篩選條件) 選擇立即xxx,繼續(xù)下一步 輸入發(fā)布服務器的sa賬戶登陸密碼就行了 勾選創(chuàng)建發(fā)布 查看發(fā)布向導選項 創(chuàng)建發(fā)布成功 到此發(fā)布完成,你可以刷新后查看: 第三步:訂閱 在另外一臺數據庫上選擇【復制】-->【本地訂閱】,,然后右鍵【新建訂閱】 這里選擇查找SQL Server發(fā)布服務器 自動彈出連接數據庫對話框,,輸入發(fā)布服務器的服務器名稱,賬號密碼等,。 連接成功后,選中需要的訂閱的數據庫發(fā)布: 選擇在分發(fā)服務器上運行代理 在本地新建一個同名的數據庫: 配置新建數據庫的相關信息 點擊【與訂閱服務器的連接】下面的按鈕 按下圖進行配置 選擇定義計劃: 選擇代理計劃 初始化訂閱 初始化完成開始創(chuàng)建訂閱 完成訂閱向導 訂閱就完成,然后刷新查看內容: 等過一段時間,數據同步完成后就可以查看數據了,是否一致了! 這樣訂閱操作就結束了。 訂閱失敗案例 訂閱完成后,卻發(fā)現本地訂閱中沒有內容,但是剛剛確實已經訂閱成功了啊,為什么呢? 然后在發(fā)布服務器中,右鍵本地發(fā)布中的數據庫,啟動復制監(jiān)視器 發(fā)現是報錯了 這個原因可能有好多種: 1.訂閱的時候,輸入的密碼輸錯了,我第一次就是輸成了發(fā)布服務器的密碼 2.對應的協(xié)議要開啟 3.對應的服務要開啟Sql Server Browser和Sql Server 代理(MSSQLSERVER) 這三個都檢查無誤了,基本上就搞定了吧! 此外,,還有一種報錯是:'對路徑'XXXXX'訪問被拒絕或者沒有訪問路徑'xxx'的權限'等,這個錯誤一般是用戶的權限不夠導致的,解決方法如下: 使用SQL Server發(fā)布數據庫快照的配置中,,如果你選擇了使用SQL Server代理,而SQL Server代理服務使用的登陸身份不具有對存放快照文件位置的讀寫權限時,,就會出現該錯誤,。 解決的方法是可以修改SQL Server代理服務的登錄身份,具體做法為:【程序】->【Sql Server Configuration Manager】->在左邊欄選擇【SQL Server服務】->在右側面板中【SQL Server 代理】一行上右擊,選擇【屬性】,,在彈出的對話框中選擇【內置賬戶】->LocalSystem即可,。 至此,,整個訂閱發(fā)布的內容就結束了,,感興趣的小伙伴可以在本地安裝一個虛擬機進行試驗,有什么不懂的可以在底下留言~ |
|
來自: 慶亮trj21bcn0z > 《數據庫》