sql server 發佈和訂閱

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

背景描述: html

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

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

須要從服務器A中數據庫發佈,而後在B中訂閱A發佈的數據庫;spa

 

------------------------------------------------第一步: 準備工做------------------------------------------------.net

準備工做1: 配置機器名和數據庫服務名一致3d

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

查看方法: code

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

1htm

2

3

4

use master

go

select @@servername

select serverproperty('servername')

 

若是查出來的兩個名字不同,那就須要把他們的名字改爲同樣的,方法以下:

2.刪除全部以前配置的publishers('old_server_name'爲以前的服務名)

1

2

3

4

5

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.配置計算機名與服務名一致

1

2

3

4

5

6

7

8

9

10

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.查看服務名

1

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便可。

 

 

 

相關文章
相關標籤/搜索