MSSQL數據同步利用數據庫複製技術實現數據同步更新

 複製的概念
複製是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發佈到多個存儲站點上的有效方式。使用複製技術,用戶可以將一份數據發佈到多臺服務器上,從而使不同的服務器用戶都可以在權限的許可的範圍內共享這份數據。複製技術可以確保分佈在不同地點的數據自動同步更新,從而保證數據的一致性。
SQL複製的基本元素包括
出版服務器、訂閱服務器、分發服務器、出版物、文章
SQL複製的工作原理
SQL SERVER 主要採用出版物、訂閱的方式來處理複製。源數據所在的服務器是出版服務器,負責發表數據。出版服務器把要發表的數據的所有改變情況的拷貝複製到分發服務器,分發服務器包含有一個分發數據庫,可接收數據的所有改變,並保存這些改變,再把這些改變分發給訂閱服務器
SQL SERVER複製技術類型
SQL SERVER提供了三種複製技術,分別是:
1、快照複製(呆會我們就使用這個)
2、事務複製
3、合併複製
只要把上面這些概念弄清楚了那麼對複製也就有了一定的理解。

接下來我們就一步一步來實現複製的步驟。
第一先來配置出版服務器
(1)選中指定[服務器]節點
(2)從[工具]下拉菜單的[複製]子菜單中選擇[發佈、訂閱服務器和分發]命令
(3)系統彈出一個對話框點[下一步]然後看着提示一直操作到完成。
(4)當完成了出版服務器的設置以後系統會爲該服務器的樹形結構中添加一個複製監視器。同時也生成一個分發數據庫(distribution)
注:
1.不能用local來創建出版服務器,必須用機器名或IP地址註冊SqlServer服務器
2.必須開啓SqlServer Agent
3.出版和發佈服務器可以用同一個
4.啓動Agent的賬號必須改爲其他具有Administrator權限的賬號,否則可能無法讀取某些目錄,默認是使用系統賬號

第二創建出版物
(1)選中指定的服務器
(2)從[工具]菜單的[複製]子菜單中選擇[創建和管理髮布]命令。此時系統會彈出一個對話框
(3)選擇要創建出版物的數據庫,然後單擊[創建發佈]
(4)在[創建發佈嚮導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。對話框上的內容是複製的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個大家可以去看看幫助)
(5)單擊[下一步]系統要求指定可以訂閱該發佈的數據庫服務器類型,SQLSERVER允許在不同的數據庫如 ORACLE或ACCESS之間進行數據複製。但是在這裏我們選擇運行"SQL SERVER 2000"的數據庫服務器
(6)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表
(7)然後[下一步]直到操作完成。當完成出版物的創建後創建出版物的數據庫也就變成了一個共享數據庫。

第三設計訂閱
(1)選中指定的訂閱服務器
(2)從[工具]下拉菜單中選擇[複製]子菜單的[請求訂閱]
(3)按照單擊[下一步]操作直到系統會提示檢查SQL SERVER代理服務的運行狀態,執行復制操作的前提條件是SQL SERVER代理服務必須已經啓動。
(4)單擊[完成]。完成訂閱操作。
完成上面的步驟其實複製也就是成功了。但是如何來知道複製是否成功了呢?這裏可以通過這種方法來快速看是否成功。展開出版服務器下面的複製--發佈內容--右鍵發佈內容--屬性--擊活--狀態然後點立即運行代理程序接着點代理程序屬性擊活調度把調度設置爲每一天發生,每一分鐘,在0:00:00和23:59:59之間。接下來就是判斷複製是否成功了打開C:/Program Files/Microsoft SQL Server/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以時間做爲文件名的文件夾差不多一分中就產生一個。要是你還不信的話就打開你的數據庫看在訂閱的服務器的指定訂閱數據庫下看是不是看到了你剛纔所發佈的表-
注:
1.我在訂閱的時候,發現在要訂閱的服務器的企業管理器上無法顯示出發佈服務器的訂閱列表,但是在發佈服務器上註冊訂閱服務器後可以正常看到訂閱列表,所以,如果可以的話,所有操作在發佈服務器上進行可能比較方便。
2.由於默認的快照發布方式使用共享目錄的方式進行數據同步,而我這裏的兩臺服務器位於internet網上,所以我選擇了使用Ftp模式發佈快照。

具體操作如下:
發佈服務器端:
A.選擇 複製監視器--發佈服務器--(服務器名)--已發佈的數據庫名 右健菜單 選擇"屬性"
B.選擇"快照位置"選項框,鉤選"在下列位置中生成快照",選擇"訂閱服務器可以使用ftp",設置Ftp服務器訪問屬性,建議將ftp根目錄設置爲快照位置
C.選擇"狀態"選項框,點擊"立即執行代理程序",以讓設置馬上生效,然後試一下瀏覽快照,如果一切設置正確,應該能看到快照內容,如果快照爲空,說明沒有需要同步的內容

訂閱服務器端:
A.選中要訂閱的數據庫,選擇"請求訂閱",
B.選中右邊列表裏的訂閱項目,右健設置屬性
C.在快照文件位置選項框設置使用Ftp協議下載快照
在安全性選項框輸入Sqlserver身份驗證密碼

遇見的問題:
distributor_admin未在該服務器上定義爲遠程登錄
解決:
因爲distributor_admin未在該服務器上定義爲遠程登錄配置發佈和分發嚮導,最後完成時報錯:配置分發服務器:未能連接到服務器,因爲distributor_admin未在該服務器上定義爲遠程登錄/我知道,我剛解決了,你肯定在裝完SQL SERVER以後,改了計算機名,雖然sql server 還可以用,但一用複製時,SQL SERVER讀取了舊的計算機實例名,不信,你試試select @@SERVERNAME顯示出來的,肯定不是你現在的計算機名.
用sp_dropserver <(用select @@SERVERNAME顯示出來的舊名)> go
sp_addserver <你現在的計算機名>, LOCAL go
重啓sql server服務

遇見的問題:
Ftp無法檢索文件""
解決:
經過檢查,因爲發佈和訂閱服務器上設置了防火牆,而Sqlserver使用Ftp模式發佈時默認採用port模式,意味着訂閱服務器端必須開放端口,所以找到訂閱服務器客戶端所在進程爲distrib.exe,將distrib.exe加入window防火牆的例外列表中,問題解決

遇見的問題:
" 在 BCP 數據文件中遇到的意外的 EOF","字符串數據,右截位"錯誤
解決:
這是目前遇到的最鬱悶的問題,網上四處查找,也沒有發現特別好的方法。網上找到一個方法,就是將字段全改爲n開頭的,如varchar-->nvarchar,
text-->ntext,似乎能解決點問題。 網上還有一個方法,發佈時採用"異類數據源",我沒有試過,不知道可行不可行

 

發佈了38 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章