1. 程式人生 > >多臺sql server 伺服器之間資料的同步、分發、複製

多臺sql server 伺服器之間資料的同步、分發、複製

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

利用資料庫複製技術 實現資料同步更新

複製的概念
複製是將一組資料從一個數據源拷貝到多個數據源的技術,是將一份資料釋出到多個儲存站點上的有效方式。使用複製技術,使用者可以將一份資料釋出到多臺伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分佈在不同地點的資料自動同步更新,從而保證資料的一致性。

SQL複製的基本元素包括
出版伺服器、訂閱伺服器、分發伺服器、出版物、文章

SQL複製的工作原理
SQL SERVER 主要採用出版物、訂閱的方式來處理複製。源資料所在的伺服器是出版伺服器,負責發表資料。出版伺服器把要發表的資料的所有改變情況的拷貝複製到分發伺服器,分發伺服器包含有一個分發資料庫,可接收資料的所有改變,並儲存這些改變,再把這些改變分發給訂閱伺服器

SQL SERVER複製技術型別,三種複製技術,分別是:
1、快照複製(呆會我們就使用這個)
2、事務複製
3、合併複製

只要把上面這些概念弄清楚了那麼對複製也就有了一定的理解。接下來我們就一步一步來實現複製的步驟。
第一先來配置出版伺服器
(1)選中指定[伺服器]節點
(2)從[工具]下拉選單的[複製]子選單中選擇[釋出、訂閱伺服器和分發]命令
(3)系統彈出一個對話方塊點[下一步]然後看著提示一直操作到完成。
(4)當完成了出版伺服器的設定以後系統會為該伺服器的樹形結構中新增一個複製監視器。同時也生成一個分發資料庫(distribution)

第二創建出版物
(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下面
看是不是有一些以時間做為檔名的資料夾差不多一分中就產生一個。
要是你還不信的話就開啟你的資料庫看在訂閱的伺服器的指定訂閱資料庫下看是不是看到了你剛才所釋出的表


/***************** 常見問題:許可權問題  

啟動代理的域使用者賬號必須具有讀取釋出-分發伺服器目錄的許可權
你用的賬號沒有讀取//ServerA/D$/Program Files/Microsoft SQL Server/MSSQL/repldata/unc/這個目錄下的檔案的許可權。
訪問資料夾要不含D$等,可映照資料夾

     啟動代理的域使用者賬號必須具有讀取釋出-分發伺服器目錄的許可權
----^^^^^^^^^^^^^^^在控制面板-->管理-->服務-->sqlagent-->屬性裡的那個啟動使用者

-------------------------------------------------

 

準備工作:

1.釋出伺服器,訂閱伺服器都建立一個同名的windows使用者,並設定相同的密碼,做為釋出快照資料夾的有效訪問使用者
我的電腦
--控制面板
--管理工具
--計算機管理
--使用者和組
--右鍵使用者
--新建使用者
--建立一個隸屬於administrator組的登陸windows的使用者

2.在釋出伺服器上,新建一個共享目錄,做為釋出的快照檔案的存放目錄,操作:

我的電腦--D:/ 新建一個目錄,名為: PUB
--右鍵這個新建的目錄
--屬性--共享
--選擇"共享該資料夾"
--通過"許可權"按紐來設定具體的使用者許可權,保證第一步中建立的使用者具有對該資料夾的所有許可權
--確定


3.設定SQL代理(SQLSERVERAGENT)服務的啟動使用者(釋出/訂閱伺服器均做此設定)

開始--程式--管理工具--服務
--右鍵SQLSERVERAGENT
--屬性--登陸--選擇"此賬戶"
--輸入或者選擇第一步中建立的windows登入使用者名稱
--"密碼"中輸入該使用者的密碼

4.設定SQL Server身份驗證模式,解決連線時的許可權問題(釋出/訂閱伺服器均做此設定)

企業管理器
--右鍵SQL例項--屬性
--安全性--身份驗證
--選擇"SQL Server 和 Windows"
--確定

5.在釋出伺服器和訂閱伺服器上互相註冊
企業管理器
--右鍵SQL Server組
--新建SQL Server註冊...
--下一步--可用的伺服器中,輸入你要註冊的遠端伺服器名--新增
--下一步--連線使用,選擇第二個"SQL Server身份驗證"
--下一步--輸入使用者名稱和密碼
--下一步--選擇SQL Server組,也可以建立一個新組
--下一步--完成

6.對於只能用IP,不能用計算機名的,為其註冊伺服器別名
  (在連線端配置,比如,在訂閱伺服器上配置的話,伺服器名稱中輸入的是釋出伺服器的IP)
開始--程式--Microsoft SQL Server--客戶端網路實用工具
--別名--新增
--網路庫選擇"tcp/ip"--伺服器別名輸入SQL伺服器名
--連線引數--伺服器名稱中輸入SQL伺服器ip地址
--如果你修改了SQL的埠,取消選擇"動態決定埠",並輸入對應的埠號


 

 

---------------------------------------------------

正式開始:

1.配置釋出伺服器

a. 選中指定 [伺服器] 節點
b. 從 [工具] 下拉選單的 [複製] 子選單中選擇 [釋出、訂閱伺服器和分發] 命令
c. 系統彈出一個對話方塊點 [下一步] 然後看著提示操作
--直到"指定快照資料夾"
--在"快照資料夾"中輸入準備工作中建立的目錄: //<伺服器名>/pub
一[下一步] 直操作到完成。
d. 當完成了出版伺服器的設定以後系統會為該伺服器的樹形結構中新增一個複製監視器
同時也生成一個分發資料庫(distribution)


---------------------------------------------------------------------------

2.建立釋出
a. 選中指定的伺服器
b. 從 [工具] 選單的 [複製] 子選單中選擇 [建立和管理髮布] 命令。此時系統會彈出
一個對話方塊
c. 選擇要建立釋出的資料庫,然後單擊 [建立釋出]
d. 在 [建立釋出嚮導] 的提示對話方塊中單擊 [下一步] 系統就會彈出一個對話方塊。對話
框上的內容是複製的三個型別。我們現在選第一個也就是預設的快照發布(其他兩個
大家可以去看看幫助) 
e. 單擊 [下一步] 系統要求指定可以訂閱該釋出的資料庫伺服器型別,SQLSERVER允許在
不同的資料庫如 ORACLE或ACCESS之間進行資料複製。但是在這裡我們選擇執行
"SQL SERVER 2000"的資料庫伺服器
f. 單擊 [下一步] ,選擇要釋出的物件(如表,檢視,儲存過程,一般是表)
g. 然後 [下一步] 直到操作完成。當完成出版物的建立後創建出版物的資料庫也就變成了
一個共享資料庫。


---------------------------------------------------------------------------

3.設計訂閱
a. 選中指定的訂閱伺服器
b. 從 [工具] 下拉選單中選擇 [複製] 子選單的 [請求訂閱]
c. 按照提示單擊 [下一步] 操作直到系統會提示檢查SQL SERVER代理服務的執行狀態,執行
複製操作的前提條件是SQL SERVER代理服務必須已經啟動。
d. 單擊 [完成] 完成訂閱操作。


----------------------------------------------------------------------------

完成上面的步驟其實複製也就是成功了。但是如何來知道複製是否成功了呢?
這裡可以通過這種方法來快速看是否成功。
展開出版伺服器下面的複製——釋出內容——右鍵釋出內容——屬性——擊活——狀態然後點立即執行代理程式接著點代理程式屬性擊活排程
把排程設定為每一天發生,每一分鐘,在0:00:00和23:59:59之間。
接下來就是判斷複製是否成功了打
開C:/Program Files/Microsoft SQL Server/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面
看是不是有一些以時間做為檔名的資料夾差不多一分中就產生一個。

注意點:如出現"合併程序未能初始化訂閱"的錯誤,可把訂閱伺服器分離,然後再還原上去試試.