背景描述:
發布服務器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即可。


