Sql Server 2008R2 數據庫發布與訂閱


背景描述: 

發布服務器A: (遠程端) , 數據庫服務名: GUANWANG1

訂閱服務器B: (本機)   ,  數據庫服務名: PC-LLRDBA

需要從服務器A中數據庫發布,然后在B中訂閱A發布的數據庫;

 

------------------------------------------------第一步: 准備工作------------------------------------------------

准備工作1: 配置機器名和數據庫服務名一致

先檢查A,B中的機器名和數據庫服務名是否一致,這個很重要!

查看方法: 

1.檢查SQL Server 的服務器名稱

use master 
go 
select @@servername
select serverproperty('servername')

 

如果查出來的兩個名字不一樣,那就需要把他們的名字改成一樣的,方法如下:

2.刪除所有之前配置的publishers('old_server_name'為之前的服務名)

select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'old_server_name',null
exec sp_dropserver 'old_server_name', 'droplogins'

 

執行完后,重啟SQL Server服務

3.配置計算機名與服務名一致

USE master
 GO
 if 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: 配置數據庫服務器名稱的別稱

 

因為數據庫發布和訂閱,不能用ip登陸,必須用服務名登陸

方法之一是改服務器的登陸別稱!

 

首先在本機B配置連接服務器A的登陸別稱: 

先在[開始],[所有程序]中打開[SQL Server配置管理器]:

 

 在[SQL Native Client 10.0配置(32位)]中的別名中配置,如圖:

 

這里的別名必須和服務器B的服務器名一致也就是GUANWANG1,實際的按照自己的名字改動;

端口號是:1433

服務器是對應的服務器機器的IP地址

協議是TCP/IP

 

同理,在下面的[SQL Native Client 10.0配置]中也一樣配置下!

 

 

 然后在服務器A中也要配置訪問本機B的別稱,這一步不能少,否則后面本地訂閱的時候會失敗並報錯,"進程無法連接到 Subscriber“PC-LLRDBA”。 "

切記,這里是雙向的,當初我查了好久才想起來,服務端也要配置這個......

具體的方法同上:注意別名是本機B的服務名PC-LLRDBA, IP是本機的IP,實在不知道在cmd下config一下就有了!

 

 

 

准備工作好了后,就進行第二步發布

------------------------------------------------第二步:發布------------------------------------------------

登陸服務器A數據庫,用別名登陸:

在[復制],[本地發布]中右鍵新建發布

 

 

 

選擇你要發布的數據庫

 

選擇發布類型:(具體選哪種,自己百度下各種的差異),我這里選事務發布

 

 可以選擇發布的對象(表,存儲過程,視圖等等),也可以選擇部分內容,點開勾選就行了

 

 如果沒有特別篩選的,就直接下一步(比如說我只要同步Order表中2014年以后的數據,那么你可以點添加,增加篩選條件)

 

 

選擇立即xxx,繼續下一步

 

 

輸入發布服務器的sa賬戶登陸密碼就行了

 

 

 

 

 

 

 

 

OK,到此發布完成,你可以刷新后查看:

 

 

------------------------------------------------第三步:訂閱------------------------------------------------

 

 這里選擇查找SQL Server發布服務器

 

 

 

選中需要的訂閱的數據庫發布:

 

 

 

 

在本地新建一個同名的數據庫:

 

 

 

 

 點擊與訂閱服務器的連接下面的按鈕

 

 

 

選擇定義計划: 

 

 

 

 

 

 

 

 

 

 

訂閱就完成,然后刷新查看內容:

 

 

 

等過一段時間,數據同步完成后就可以查看數據了,是否一致了!

 ------------------------------------------------訂閱完成------------------------------------------------

 

 

訂閱失敗案例: 

訂閱完成后,卻發現本地訂閱中沒有內容,但是剛剛確實已經訂閱成功了啊,為什么呢?

 

 然后在發布服務器中,右鍵本地發布中的數據庫,啟動復制監視器

 

 發現是報錯了

 

 

 

 

這個原因可能有好多種:

1:>>訂閱的時候,輸入的密碼輸錯了,我第一次就是輸成了發布服務器的密碼

 

 

 

2:>>對應的協議要開啟

 

 

3:>>對應的服務要開啟Sql Server Browser和Sql Server 代理(MSSQLSERVER)

 

 

這三個都檢查無誤了,基本上就搞定了吧!

 

 

還有一種報錯是:"對路徑"XXXXX"訪問被拒絕或者沒有訪問路徑"xxx"的權限"等,這個錯誤一般是用戶的權限不夠導致的,解決方法如下: 

使用SQL Server發布數據庫快照的配置中,如果你選擇了使用SQL Server代理,而SQL Server代理服務使用的登陸身份不具有對存放快照文件位置的讀寫權限時,就會出現該錯誤。

解決的方法是可以修改SQL Server代理服務的登錄身份,具體做法為:程序->Sql Server Configuration Manager->在左邊欄選擇”SQL Server服務“->在右側面板中"SQL Server 代理”一行上右擊,選擇“屬性”,在彈出的對話框中選擇"內置賬戶“->LocalSystem即可。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM