SqlServer資料庫同步是項目中常用到的環節,若一個項目中的資料同時存在於不同的資料庫伺服器中,而這些資料庫需要被多個不同的網域調用時,配置SqlServer資料庫同步是個比較好的解決方案。SqlServer資料庫同步的配置比較煩鎖,下面對其配置詳細步驟進行介紹:
一、 資料複製前提條件
1. 資料庫故障還原模型必需為完全還原模型。
2. 所有被同步的資料表都必須要用主鍵。
3. 發行伺服器、散發者和訂閱伺服器必須使用電腦名稱來進行SQLSERVER伺服器的註冊。
4. SQLSERVER必需啟動代理服務,且代理服務必需以本機電腦的帳號運行。
二、 解決前提條件實施步驟
1. 將資料庫故障還原模型調整為完全還原模型。具體步驟如下:
開啟SQLSERVER企業管理器à選擇對應的資料庫à單擊右鍵選擇屬性à選擇”選項”à 故障還原模型選擇完全還原模型。
2. 所有被同步的資料表都必須要用主鍵。(主要指事務複製)如果沒有主鍵的資料表,增加一個欄位名稱為id,類型為int 型,標識為自增1的欄位。
3. 發行伺服器、散發者和訂閱伺服器必須使用電腦名稱來進行SQLSERVER伺服器的註冊。
在企業管理器裡面註冊的伺服器,如果需要用作發行伺服器、散發者和訂閱伺服器,都必需以伺服器名稱進行註冊。不得使用IP地址以及別名進行註冊,比如LOCAL, “.”以及LOCALHOST等。
如果非同一網段或者遠程伺服器,需要將其對應關係加到本地系統網路設定檔中。檔案的具體位置在%systemroot%\system32\drivers\etc\hosts
配置方式: 用記事本開啟hosts檔案,在檔案的最下方添加IP地址和主機名稱的對應關係。:
SQLSERVER必需啟動代理服務,且代理服務必需以本機電腦的帳號運行。
啟動SQLSERVER代理的方法:我的電腦à單擊右鍵”管理”à服務à SQLSERVERAGENT 將其設為自動啟動。:
以本機電腦帳戶啟動並執行配置方法: 開啟SQLSERVER企業管理器,選擇管理SQLSERVER代理。單擊右鍵屬性。將系統帳戶更改為本地帳戶且此本地帳號要求有系統管理員的許可權。一般設定為administrator這個帳戶。
以上前提條件滿足以後,就可以設定資料庫複製服務了。
三、瞭解複製配置概念和原理
1. 資料複製角色
複製服務有三個角色,分別是發行伺服器,散發者和訂閱伺服器。他們分別做不同的工作。就像我們日常買書和報紙的概念是一樣的。
發行伺服器: 也稱為出版伺服器,主要負責資料的發布和出版工作。這個角色就好比我們的出版社或者報社。
散發者: 主要負責將發行伺服器的內容分發給訂閱者。他是串連發行伺服器和訂閱伺服器的橋樑。這個角色就好比我們的郵遞員,將書和報紙送到我們的手裡。
訂閱伺服器: 主要負責接收發布的內容。這個角色就好比我們自己訂閱書和報紙,是一個訂閱者的角色。
2. 資料訂閱模式
資料訂閱的模式有推式訂閱和拉式訂閱兩種。推式訂閱主要是散發者將資料推給訂閱伺服器。 拉式訂閱是訂閱伺服器主動向散發者取資料。
這就好比我們自己訂閱雜誌和報紙一樣,如果人家送貨上門,這就是推式訂閱,消耗的是散發者的資源,也就是消耗送貨人員的資源。如果是拉式訂閱,我們就需要自己到書店去購買,這樣消耗的就是我們自己的資料。消耗的是訂閱伺服器的資源。
3.資料發布類型
資料發布類型可發為三種(SQL2000):
A. 快照式複寫
當符合以下一個或多個條件時,使用快照式複寫本身是最合適的:
· 很少更改資料。
· 在一段時間內允許具有相對發行伺服器已淘汰的資料副本。
· 複製少量資料。
· 在短期內出現大量更改
B. 事務複製
事務性複製通常用於伺服器到伺服器環境中,在以下各種情況下適合採用事務性複製:
· 希望發生增量更改時將其傳播到訂閱伺服器。
· 從發行伺服器上發生更改,至更改到達訂閱伺服器,應用程式需要這兩者之間的延隔時間較短。
· 應用程式需要訪問中間資料狀態。例如,如果某一行更改了五次,事務性複製將允許應用程式響應每次更改(例如,激發觸發器),而不只是響應該行最終的資料更改。
· 發行伺服器有大量的插入、更新和刪除活動。
C. 合併式複寫
合併式複寫通常用於伺服器到用戶端的環境中。合併式複寫適用於下列各種情況:
· 多個訂閱伺服器可能會在不同時間更新同一資料,並將其更改傳播到發行伺服器和其他訂閱伺服器。
· 訂閱伺服器需要接收資料,離線更改資料,並在以後與發行伺服器和其他訂閱伺服器同步更改。
· 每個訂閱伺服器都需要不同的資料分區。
· 可能會發生衝突,並且在衝突發生時,您需要具有檢測和解決衝突的能力。
· 應用程式需要最終的資料更改結果,而不是訪問中間資料狀態。例如,如果在訂閱伺服器與發行伺服器進行同步之前,訂閱伺服器上的行更改了五次,則該行在發行伺服器上僅更改一次來反映最終資料更改(也就是第五次更改的值)。
四、資料複製實施步驟
A. 配置發行伺服器
開啟SQLSERVER企業管理器à選擇登入的SQL伺服器à工具à嚮導
彈出選擇嚮導後,選擇“配置發布和分發嚮導”後,出現如下嚮導:
點擊”下一步”
選擇此伺服器作為散發者和散發者,點擊下一步
選擇快照檔案夾,注意此處必段要使用網路路徑。
點擊下一步,
使用預設設定,點擊下一步後點擊完成, 出現正在配置對話方塊,如:
配置完成後出現如下對話方塊:
此時,說明我們的發布服器配置成功了!
點擊確定後,會談出如下視窗。如:
此時SQLSERVER企業管理器中多了一項複製監視器。如:
發行伺服器配置成功以後,我們可以開始來配置發行伺服器了。
B.配置散發者
分發可以配置在散發者上,也可以配置到其他的SQLSERVER
伺服器上。此處我們將分布伺服器和散發者配置在同一台伺服器上。下面是需要發行集資料庫的配置步驟:
開啟SQLSERVER企業管理器à選擇登入的SQL伺服器à工具à嚮導
彈出選擇嚮導後,點擊”複製”選擇”建立發布嚮導”,選擇需要發布的資料庫。如:
點擊“建立發布”後,出現嚮導,點擊“下一步”出現如下介面:
此介面要求確認選擇需要發布的資料庫,系統會自動選中第一次選擇的資料庫,只需要點擊“下一步”後出現如下介面:
此時需要選擇發布的類型,跟據我們對發布類型的描述和網路頻寬情況,選擇合適的發布類型,比較常用的是快照發布和事務發布。下面就以這兩個發布為例進行配置。首先我們選擇快照發布,點擊“下一步”, 出現如下介面:
此時嚮導提示我們選擇訂閱 伺服器的類型。由於我們現在用的都是
SQL SERVER 2000, 所以此時我們只選擇“運行SQL SERVER 2000的伺服器”即可(系統預設選項),然後點擊“下一步”,出現如下介面:
此時出現選擇資料庫物件進行發布,我們可以全部選擇,也可只選擇需要發布的表、預存程序、視圖以及自訂函數等。我們點擊表的“全部發布”,點擊“下一步”,出現如下介面:
由於我們採用的是快照式複寫,所以會出現一個”IDENTITY屬性未傳輸到訂閱伺服器的問題(就是指不會轉輸int類型為自增1的屬性,但是資料會進行傳輸)”,此時我們點擊下一步, 出現如下介面:
出現以上介面後,我們再次點擊“下一步”,會出現如下對話方塊:
可以選擇對定義資料的篩選,比如進行垂直(資料的列)或者水平(資料的行)的篩選。此處我們選擇否(系統預設),然後點擊”下一步”, 如:
出現配置完成的介面,點擊完成即可。如:
發行伺服器建立完成後,會出現如下介面:
致此,發行伺服器的配置就完成了。
此時我們可以通過複製監視器來查看現有伺服器的各項複製代理的工作情況。如:
當發行伺服器配置完成以後,我們可以被發布的資料庫多了一個手托著的表徵圖。如:
註:如果需要對某資料庫進行事務複製,只需要在分布類型中選擇“事務發布”就可以了。如:
其他動作與快照式複寫相同。需要注意的是“事務複製”要求資料表必需要有主鍵,否則無法對錶進行發布。
發行伺服器配置完成以後,我們可能進行訂閱伺服器的配置了。
C. 配置訂閱伺服器
訂閱伺服器有兩種方式。一種是推式訂閱,一種是拉式訂閱。
具體選擇那一種訂閱者式。需要考慮幾方面的因素:
① 對網路的考慮 比如外網遠程伺服器需要訂閱本機資料,由於本機伺服器沒有公網IP,則需要採取由本地向遠程伺服器進行推式訂閱,即強制訂閱的形式。
② 對伺服器效能的考慮 比如訂閱伺服器和散發者都是外網IP地址或者內網IP地址。但是要求複製過程中不會對散發者產生過大的壓力。此時,我們可以採取拉式訂閱的方式。拉式訂閱消耗的是訂閱伺服器的資源,而不會對散發者的效能產生大的影響。
推式訂閱的具體配置如下:
開啟SQLSERVER企業管理器à選擇登入的SQL伺服器工具嚮導複製建立強制訂閱嚮導。如:
選擇需要強制訂閱的資料庫,單擊“強制新訂閱“後出現了強制新訂閱的歡迎嚮導。如:
點擊“下一步”,選擇需要訂閱伺服器,如:
單擊“下一步”,出現訂閱資料庫的名稱, 如:
此時,建立一個適合的資料庫名點“瀏覽或建立”就可以選擇現
有的資料庫或者建立一個新的資料庫了。如:
如果需要建立一個資料庫,我們可以點擊“建立”,出現了建立資料庫的對話方塊。如:
建立完資料庫之後,點擊“下一步”如:
選擇分發代理何時更新訂閱內容,可以使用最短的延隔時間,也
可以選擇使用調度,此時我們選擇連續池(預設設定),然後點擊”下一步”, 出現如下介面:
點擊“下一步”進行初始化架構和資料, 此時系統會檢測SQLSERVER代理服務的工作狀態。如:
如果狀態是“正在運行”,可點擊“下一步”,如果狀態是未知,則需要檢查一下SQLSERVER代理服務是否啟動,如果沒有,則需要啟動一下SQLSERVER的代理服務。點擊”下一步”之後,
出現配置完成介面,如:
點擊“完成”,並開始配置訂閱了。如:
至此推式訂閱配置完成。(拉式訂閱配置與此基本相同,需要在訂閱伺服器上通過複製嚮導配置提取訂閱即可)