天天看點

SQL Server 多執行個體下的複制一.本文所涉及的内容(Contents)二.背景(Contexts)三.搭建步驟(Procedure)四.注意事項(Attention)

  在伺服器a有一個資料庫task,需要把部分表部分字段釋出訂閱到伺服器b的tasksiteinfo資料庫上,但是a伺服器有些特别,因為它除了有個預設的執行個體之外,還有一個命名執行個體:tzr06\sqlserver2008r2,如果是預設執行個體到不會遇到太多的問題,現在因為有命名執行個體在建立釋出訂閱的過程中出現了一些異常,是以這裡做為記錄;

(一) 環境資訊

系統環境:windows server 2008 r2 + sql server 2008

r2

釋出伺服器:192.168.100.6,1433,伺服器名稱:tzr06

釋出伺服器命名執行個體:sqlserver2008r2

釋出資料庫:task

分發伺服器:與釋出伺服器同一台機器

訂閱伺服器:192.168.100.8,1433,伺服器名稱:tzr08

訂閱資料庫:tasksubscribe

資料庫帳号:replicationuser/ replicationpassword

(二) 搭建過程

  上面提到的,釋出伺服器上有個預設執行個體和一個命名執行個體,本來預設執行個體的資料庫端口為1433,後來我把它禁用了,再把命名執行個體的端口設定為1433,是以這個需要借助别名來實作釋出訂閱。

a. 釋出伺服器配置

首先在釋出資料庫和訂閱資料庫上建立相同的帳号和密碼(replicationuser/

replicationpassword),并且設定task資料庫的安全對象,設定這樣的帳号的目的就是為了和程式連接配接到資料庫的帳号區分開,可以做權限上的控制,友善問題的排查;

(figure1:帳号密碼)

在e盤目錄下建立檔案夾:e:\repldata,并設定這個檔案夾為共享目錄,共享使用者為bfadmin;

(figure2:檔案夾權限)

需要設定sql server agent登陸帳号為上面檔案夾通路使用者bfadmin;

(figure3:sql server agent登陸帳号)

(figure4:測試網絡共享)

(figure5:分發伺服器)

如果你設定快照檔案夾路徑為:e:\repldata,即使你的釋出伺服器本身就是分發伺服器,如果訂閱伺服器是另外一台機器,那麼在請求(pull)訂閱(如果是推送(push)訂閱就沒有這個限制)模式下訂閱代理是無法通路到這個快照檔案的;除非你釋出伺服器、分發伺服器和訂閱伺服器都是同一台機器;你應該設定快照檔案夾路徑為:\\tzr06\

repldata;

(figure6:快照檔案夾)

(figure7:選擇釋出資料庫)

(figure8:事務釋出)

(figure9:選擇對象)

(figure10:選擇對象)

(figure11:選擇對象)

(figure12:初始化訂閱)

(figure13:安全設定)

使用上面建立好的replicationuser帳号作為連接配接到釋出伺服器的帳号和密碼;

(figure14:設定帳号密碼)

(figure15:釋出選項)

(figure16:釋出名稱)

(figure17:檢視複制情況)

b. 訂閱伺服器配置

建立完釋出伺服器(分發伺服器也一起建立了),接下來就可以建立訂閱伺服器了,下面是訂閱伺服器設定的具體步驟:

建立完了資料庫帳号,我們接着來建立訂閱,按照前面提到的在釋出伺服器上有命名執行個體,是以這裡是按照tzr06\sqlserver2008r2來設定伺服器名稱的,但是在連接配接過程中出現了下面的錯誤:

(figure18:查找釋出伺服器錯誤資訊)

使用上面的配置在訂閱伺服器上使用【連接配接伺服器】的方式同樣無法登入到釋出伺服器,防火牆的入站規則已經加入允許1433端口了,而且在釋出伺服器使用netstat檢視端口,也是有監聽的,為什麼會連接配接不上呢?後來在【連接配接伺服器】加入1433是可以登入的,如下圖所示:

(figure19:登入釋出伺服器)

使用同樣的方式卻無法查找到釋出伺服器,出現了新的錯誤資訊,如下圖所示:

(figure20:查找釋出伺服器錯誤資訊)

既然需要加端口号,那我們就嘗試使用别名的方式,在64位的作業系統中,需要同時設定32位和64位的網絡配置,設定别名為:tzr06

(figure21:别名參數值)

(figure22:32位别名)

(figure23:64位别名)

(figure24:查找釋出伺服器錯誤資訊)

難道是tzr06有沖突?修改别名為:tzr06task

(figure25:修改32位和64位的别名)

(figure26:查找釋出伺服器錯誤資訊)

在釋出伺服器上建立釋出的時候,如果sql server資料庫執行個體名與伺服器名不一緻,也會出現上面的錯誤,是以在釋出伺服器上執行下面的sql語句:

上面的結果為:

(figure27:查找釋出伺服器錯誤資訊)

如果兩個值不同,那到可以通過下面的方式進行修改:

後來請教高文佳,突然想到:“在分發伺服器和訂閱伺服器上設定别名的時候,别名應該跟伺服器的執行個體名要一緻”繼續做嘗試,修改别名為:tzr06\sqlserver2008r2

(figure28:修改32位和64位的别名)

(figure29:選擇釋出)

(figure30:請求訂閱)

(figure31:選擇訂閱資料庫)

(figure32:分發代理安全性)

(figure33:設定帳号密碼)

(figure34:同步計劃)

(figure35:初始化)

(figure36:建立訂閱)

(figure37:本地訂閱)

1. 如果一開始你在釋出伺服器上設定的快照檔案為本地路徑,比如設定成e:\repldata,那麼有可能出現下面的錯誤:

(figure38:系統找不到指定的路徑)

這個時候你重新釋出訂閱是沒有預設路徑可以設定的,可以修改?我沒找到可以設定的地方,隻能通過另外一種方式進行修改,在釋出屬性中修改快照路徑:

(figure39:預設檔案夾)

(figure40:設定檔案夾)

在訂閱伺服器上修改訂閱屬性的快照檔案夾:

(figure41:備用檔案夾)

2. 在訂閱伺服器上同樣需要設定sql server agent登陸帳号為上面檔案夾通路使用者bfadmin,不然會出現下面的錯誤:

(figure42:錯誤資訊)

設定帳号之後需要重新開機sql server agent服務

(figure43:訂閱伺服器sql server agent設定)

3. 在釋出伺服器上無法對訂閱伺服器進行【重新初始化】,報下面錯誤資訊,即使在釋出伺服器上設定了:

(figure44:錯誤資訊)

上面這個錯誤暫時還沒有解決,不過關于命名執行個體的複制已經成功了,雖然成功了,但是還是要建議大家盡量不要在生産環境中安裝多執行個體,避免出現不必要的問題;