- 為什么要同步SQL Server 2000 數據庫,它都用在什么場合
- SQL Server 2000 數據庫同步配置的原理
- 從0開始一步一步配置SQL Server 2000 數據庫同步,非常細
- 已經非常熟練,可以看精品版SQL Server 2000 數據庫同步配置
- 配置SQL Server 2000 數據庫同步時的 常見問題
為什么要同步SQL Server 2000 數據庫,它都用在什么場合
- 數據實時備份同步,數據庫服務器出問題時我們也有其正常工作時的備份
- 數據實時備份同步,一臺服務器負載不起時,可以用來做負載均衡
- 數據實時備份同步,數據庫服務器可以無間斷,無損失遷移
- 主服務器被攻擊或當機時另一臺服務同步機可以應急
- 。。。。。可以說好處非常多的。暫時寫這么多
SQL Server 2000 數據庫同步配置的原理
復制的概念
Microsoft? SQL Server? 2000 的復制是在數據庫之間對數據和數據庫對象進行復制
和分發(fā)并進行同步以確保其一致性的一組技術。
使用復制可以將數據分發(fā)到不同位置,通過局域網、使用撥號連接、通過 Internet 分
發(fā)給遠程或移動用戶。復制還能夠使用戶提高應用程序性能,根據數據的使用方式物理
分隔數據(例如,將聯機事務處理 (OLTP) 和決策支持系統分開),或者跨越多個服務
器分布數據庫處理。
---------------------------------------------------------------------------
SQL復制的基本元素包括
發(fā)布服務器、訂閱服務器、分發(fā)服務器、發(fā)布、項目
發(fā)布服務器
發(fā)布服務器是提供數據以便復制到其它服務器的服務器。發(fā)布服務器可以具有一個或多個
發(fā)布,每個發(fā)布代表一組邏輯相關的數據。除了指定其中哪些數據需要復制之外,發(fā)布服
務器還檢測事務復制期間發(fā)生更改的數據并維護有關此站點上所有發(fā)布的信息。
分發(fā)服務器
分發(fā)服務器是作為分發(fā)數據庫宿主并存儲歷史數據和/或事務以及元數據的服務器。分發(fā)
服務器的角色根據執(zhí)行的復制類型而不同。有關更多信息,請參見復制類型。
遠程分發(fā)服務器是獨立于發(fā)布服務器并配置為復制的分發(fā)服務器的服務器。本地分發(fā)服務
器是既配置為復制的發(fā)布服務器又配置為復制的分發(fā)服務器的服務器。
訂閱服務器
訂閱服務器是接收復制數據的服務器。訂閱服務器訂閱的是發(fā)布而不是發(fā)布中分離的項目;
并且訂閱服務器只訂閱其需要的發(fā)布,而不是發(fā)布服務器上所有可用的發(fā)布。根據復制的類
型和所選擇的復制選項,訂閱服務器還可以將數據更改傳播回發(fā)布服務器或將數據重新發(fā)布
到其它訂閱服務器。
發(fā)布
發(fā)布是一個數據庫中的一個或多個項目的集合。這種多個項目的分組使得指定邏輯相關的一
組數據和數據庫對象以一起復制變得更容易。
項目
項目是指定要復制的數據表、數據分區(qū)或數據庫對象。項目可以是完整的表、某幾列(使用垂
直篩選)、某幾行(使用水平篩選)、存儲過程或視圖定義、存儲過程的執(zhí)行、視圖、索引視圖
或用戶定義函數。
訂閱
訂閱是對數據或數據庫對象的復本的請求。訂閱定義將接收的發(fā)布和接收的時間、地點。訂閱的
同步或數據分發(fā)可以由發(fā)布服務器(強制訂閱)或訂閱服務器(請求訂閱)請求。發(fā)布可以支持
強制訂閱和請求訂閱的混合。
---------------------------------------------------------------------------
SQL復制的工作原理
SQL SERVER 主要采用出版物、訂閱的方式來處理復制。源數據所在的服務器是出版服務
器,負責發(fā)表數據。出版服務器把要發(fā)表的數據的所有改變情況的拷貝復制到分發(fā)服務器
分發(fā)服務器包含有一個分發(fā)數據庫,可接收數據的所有改變,并保存這些改變,再把這些
改變分發(fā)給訂閱服務器
精品版SQL Server 2000 數據庫同步配置
SQL SERVER復制技術類型,三種復制技術,分別是(詳細的說明參考SQL聯機幫助):
1、快照復制
2、事務復制
3、合并復制
下介紹實現復制的步驟。(以快照復制為例)
準備工作:
1.發(fā)布服務器,訂閱服務器都創(chuàng)建一個同名的windows用戶,并設置相同的密碼,做為發(fā)布快照文件夾的有效訪問用戶
我的電腦
--控制面板
--管理工具
--計算機管理
--用戶和組
--右鍵用戶
--新建用戶
--建立一個隸屬于administrator組的登陸windows的用戶
2.在發(fā)布服務器上,新建一個共享目錄,做為發(fā)布的快照文件的存放目錄,操作:
我的電腦--D:\ 新建一個目錄,名為: PUB
--右鍵這個新建的目錄
--屬性--共享
--選擇"共享該文件夾"
--通過"權限"按紐來設置具體的用戶權限,保證第一步中創(chuàng)建的用戶具有對該文件夾的所有權限
--確定
3.設置SQL代理(SQLSERVERAGENT)服務的啟動用戶(發(fā)布/訂閱服務器均做此設置)
開始--程序--管理工具--服務
--右鍵SQLSERVERAGENT
--屬性--登陸--選擇"此賬戶"
--輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名
--"密碼"中輸入該用戶的密碼
4.設置SQL Server身份驗證模式,解決連接時的權限問題(發(fā)布/訂閱服務器均做此設置)
企業(yè)管理器
--右鍵SQL實例--屬性
--安全性--身份驗證
--選擇"SQL Server 和 Windows"
--確定
5.在發(fā)布服務器和訂閱服務器上互相注冊
企業(yè)管理器
--右鍵SQL Server組
--新建SQL Server注冊...
--下一步--可用的服務器中,輸入你要注冊的遠程服務器名 --添加
--下一步--連接使用,選擇第二個"SQL Server身份驗證"
--下一步--輸入用戶名和密碼(一般是sa,密碼最好設置一下非常復雜的)
--下一步--選擇SQL Server組,也可以創(chuàng)建一個新組
--下一步--完成
6.對于只能用IP,不能用計算機名的,為其注冊服務器別名
(在連接端配置,比如,在訂閱服務器上配置的話,服務器名稱中輸入的是發(fā)布服務器的IP)
開始--程序--Microsoft SQL Server--客戶端網絡實用工具
--別名--添加
--網絡庫選擇"tcp/ip"--服務器別名輸入SQL服務器名
--連接參數--服務器名稱中輸入SQL服務器ip地址
--如果你修改了SQL的端口,取消選擇"動態(tài)決定端口",并輸入對應的端口號
==============================================================================
正式開始:
1.配置發(fā)布服務器
a. 選中指定 [服務器] 節(jié)點
b. 從 [工具] 下拉菜單的 [復制] 子菜單中選擇 [發(fā)布、訂閱服務器和分發(fā)] 命令
c. 系統彈出一個對話框點 [下一步] 然后看著提示操作
--直到"指定快照文件夾"
--在"快照文件夾"中輸入準備工作中創(chuàng)建的目錄: \\服務器名>\pub
一[下一步] 直操作到完成。
d. 當完成了出版服務器的設置以后系統會為該服務器的樹形結構中添加一個復制監(jiān)視器
同時也生成一個分發(fā)數據庫(distribution)
---------------------------------------------------------------------------
2.創(chuàng)建發(fā)布
a. 選中指定的服務器
b. 從 [工具] 菜單的 [復制] 子菜單中選擇 [創(chuàng)建和管理發(fā)布] 命令。此時系統會彈出
一個對話框
c. 選擇要創(chuàng)建發(fā)布的數據庫,然后單擊 [創(chuàng)建發(fā)布]
d. 在 [創(chuàng)建發(fā)布向導] 的提示對話框中單擊 [下一步] 系統就會彈出一個對話框。對話
框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發(fā)布(其他兩個
大家可以去看看幫助)
e. 單擊 [下一步] 系統要求指定可以訂閱該發(fā)布的數據庫服務器類型,SQLSERVER允許在
不同的數據庫如 ORACLE或ACCESS之間進行數據復制。但是在這里我們選擇運行
"SQL SERVER 2000"的數據庫服務器
f. 單擊 [下一步] ,選擇要發(fā)布的對象(如表,視圖,存儲過程,一般是表)
g. 然后 [下一步] 直到操作完成。當完成出版物的創(chuàng)建后創(chuàng)建出版物的數據庫也就變成了
一個共享數據庫。
---------------------------------------------------------------------------
3.設計訂閱
a. 選中指定的訂閱服務器
b. 從 [工具] 下拉菜單中選擇 [復制] 子菜單的 [請求訂閱]
c. 按照提示單擊 [下一步] 操作直到系統會提示檢查SQL SERVER代理服務的運行狀態(tài),執(zhí)行
復制操作的前提條件是SQL SERVER代理服務必須已經啟動。(選擇一發(fā)布服務器,然后選擇你要的一個發(fā)布,一次只能添加一下,然后新建一個同名的數據庫,一路下一步就可以了,其它數據庫也這樣來。操作過程中可能會出現說服務器不支持匿名什么來著,需要在發(fā)布服務器上右擊一個發(fā)布,訂閱選項,允許匿名請求訂閱選中就可以了。)
d. 單擊 [完成] 完成訂閱操作。
----------------------------------------------------------------------------
完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?
這里可以通過這種方法來快速看是否成功。
展開出版服務器下面的復制——發(fā)布內容——右鍵發(fā)布內容——屬性——擊活——狀態(tài)然后點立即運行代理程序接著點代理程序屬性擊活調度
把調度設置為每一天發(fā)生,每一分鐘,在0:00:00和23:59:59之間。
接下來就是判斷復制是否成功了打
開C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面
看是不是有一些以時間做為文件名的文件夾差不多一分中就產生一個。
要是你還不信的話就打開你的數據庫看在訂閱的服務器的指定訂閱數據庫下看是不是看到了你剛才所發(fā)布的表
從0開始一步一步配置SQL Server 2000 數據庫同步,非常細
首先,一般情況下數據庫安裝好后,在企業(yè)管理器里看到的sql注冊是(local)(Windows NT),
SQL Server 復制不支持昵稱,例如使用“.”或“(local)”作為服務器名。
刪除該服務器的 SQL Server 注冊并使用實際的服務器名對它進行注冊。
我把先把這個刪除,右擊他,選擇刪除sql server 注冊 。。然后新建注冊,右擊Sql server組,新建Sql server 注冊 下一步--》可用的服務器里有你的計算機名,點中間的添加,添加到“添加的服務器里”--下一步--》下一步--》下一步--》完成
單擊剛剛以計算機名建好的sql server 注冊,以選中它--》工具--》復制--》配置發(fā)布、訂閱服務器和分發(fā)。。。--》下一步--》下一步--》出現“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的復制失敗。在下列對話框中,為服務啟動帳戶另外指定一個帳戶。--》確定,選擇“本帳戶”(這時進入系統新建一個帳戶比如SQL120),用戶名輸入"SEOGIRL\SQL120",輸入密碼,確定,出現:所做的一個或多個更改只有在 SQL Server 代理重新啟動后才會生效?,F在要停止并重新啟動 SQL Server 代理嗎?,確定,確定,--》下一步--》下一步--》快照文件夾路徑“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名稱,該名稱通常只能由在計算機“SEOGIRL”上有管理權限的登錄訪問。此共享可能不能由在其它計算機上運行的代理程序訪問,例如請求訂閱的代理程序。
確實要使用此快照文件夾路徑嗎?
--》否,因為這個路徑是沒辦法請求訂閱的代理程序,咱們建一個文件夾D:\ReplData,在這個文件夾的屬性里設置“共享此文件夾”,點擊“權限”設置everyone為完全。--》確定后退出--》返回咱們剛才的“快照文件夾”,在里邊 輸入“\\SEOGIRL\ReplData”--》下一步--》下一步--》完成--》關閉
打開企業(yè)管理器--》選中發(fā)布服務器--》工具--》復制--》配置發(fā)布、訂閱服務器和分發(fā)。。。--》下一步--》下一步--》下一步--》否,選擇一個快照文件夾位置,\\seogirl\ReplData--》下一步--》--》--》--》--》--》--》--》
“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的復制失敗。在下列對話框中,為服務啟動帳戶另外指定一個帳戶。
“SEOGIRL”上的 SQL Server 代理使用系統帳戶,所以服務器之間的 SQL Server 復制將會失敗。若要在服務器之間使用復制,請選擇另一個服務器器作為“SEOGIRL”的分發(fā)服務器。
“SQL120”不是有效的 Windows NT 名稱。請給出完整名稱: 域\用戶名>。
輸入"administrator"時提示以下錯誤:
錯誤 15407: 'administrator' 不是有效的 Windows NT 名稱。請給出完整名稱: 域\用戶名>。
系統出現兩個選擇 一個是 是,將SQL server代理服務配置為自動啟動
另一個是 否,我將手工啟動 SQL server 代理服務器
然后選那個呢?
我兩個都試過了 然后出現快照文件夾
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系統提示 不是有效的文件名或路徑
接下去就弄不了 哪位大哥幫幫忙啊
1。 一個是 是,將SQL server代理服務配置為自動啟動
另一個是 否,我將手工啟動 SQL server 代理服務器
說明:這個選擇是或者否都可以。是:則系統自己啟動代理服務器
否:你自己手工的啟動代理服務器
這就是區(qū)別。
2。
\\XXLJD\F$\Program Files\Microsoft SQL Server\MSSQL\ReplData
系統提示 不是有效的文件名或路徑
這樣修改:1。創(chuàng)建一個文件夾在ntfs分區(qū)上,如:D:\ReplData
2.共享這個文件夾 --右擊文件夾-屬性-共享
3。同時在相同的界面-有權限-設置為everyone-完全控制的權限
這樣就可以了。
4.路徑里輸入\\計算機名\ReplData
配置SQL Server 2000 數據庫同步時的 常見問題
問題:SQL Server 復制不支持昵稱,例如使用“.”或“(local)”作為服務器名。
回答:刪除該服務器的 SQL Server 注冊并使用計算機名進行注冊。
問題:“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的復制失敗。在下列對話框中,為服務啟動帳戶另外指定一個帳戶。
回答:應該先建一個有管理員組權限的帳戶,然后用在這。
問題:快照文件夾路徑“\\SEOGIRL\D$\Program Files\Microsoft SQL Server\MSSQL\ReplData”使用特殊的共享名稱,該名稱通常只能由在計算機“SEOGIRL”上有管理權限的登錄訪問。此共享可能不能由在其它計算機上運行的代理程序訪問,例如請求訂閱的代理程序。確實要使用此快照文件夾路徑嗎?
回答:在D盤或你別的盤建一個文件夾如:D:\pub,設為共享,并把上面那個新建 的用戶加到這里面設為完全控制,快照路徑里寫\\計算機名\pub
問題:“SQL120”不是有效的 Windows NT 名稱。請給出完整名稱: 域\用戶名>。
解決:使用:計算機名\用戶名。
另一種配置方法
******************************************************************************
我是如何設置的:
1。準備工作
設置一個公用目錄并保證2臺服務器有權限。
2。右鍵發(fā)布服務器——屬性——復制——配置——創(chuàng)建分發(fā)服務器,并設定發(fā)布服務器和發(fā)布數據庫,
然后給予訂閱服務器權限。
3。依次展開:發(fā)布服務器——將要發(fā)布的數據庫——右鍵發(fā)布內容——新建發(fā)布。
4。右鍵剛剛建立的發(fā)布——屬性——狀態(tài)——立即運行代理程序——代理程序屬性中設置調度并啟動。
4。右鍵剛剛建立的發(fā)布——屬性——訂閱——強制新建。
有時候會看不到新建立的項目,重新進就可以了。
--------------------------------------------------------------------------------
經過測試,可以順利實現數據庫結構的初始化和數據的單向同步(也就是訂閱服務器的數據可以及時更新為發(fā)布服務器的數據)。
準備工作:
>>數據的同步中主要考慮的三部分,可以理解成三臺主機。發(fā)布服務器,分發(fā)服務器和訂閱服務器;可以從字面的意思理解,要實現的功能實際就是讓訂閱服務器通過分發(fā)服務器保持數據及時地和發(fā)布服務器上的數據一致。整個執(zhí)行過程是這樣一來的:
a.訂閱服務器應該有個初始化,一般來說我們開始做這個同步任務的時候,發(fā)布服務器已經有了相當的數據量了,而我們的訂閱服務器應該是新建的服務。即使發(fā)布中沒有數據,也需要把他的數據庫結構初始化到訂閱服務器上。
b. 我采用的是事物復制,發(fā)布服務器的數據發(fā)生變化后,相當于觸發(fā)了一個更新操作,而事物復制可以在設定的時間把數據更新的操作更新到訂閱服務器中去。當然, 這個操作需要經過分發(fā)服務器。在我的測試中,我是把發(fā)布服務器和分發(fā)服務器設置為同一臺主機,可以順利實現數據在數分鐘內同步。
> >在操作的起始,需要考慮訂閱服務器是否有和發(fā)布服務器相同結構的數據庫,如果有,需要做的就是使用代理把發(fā)布服務器現有的數據初始化過去;如果沒 有對應的相同結構的數據庫,就需要要把發(fā)布服務器當前的數據庫結構和當前的數據都初始化到訂閱服務器中。當然這里所說的操作都是在下面的實施步驟中實現, 不需要單獨處理。
>>如果說對Windows系統有所要求的話,就應該保證這三個服務器(發(fā)布,分發(fā),訂閱)在同個域中,以同一個域管理員帳號身份運行,操作如下:
a.進入相應的服務器,控制面板->服務->SQLSERVERAGENT,設置登錄,三臺服務器同樣設置。
b.操作前,也不允許這三臺服務器對應的別名使用呢稱,比如"LOCAL",這樣的別名要刪除重建,可以采用主機名,比如:server02.
下面開始執(zhí)行數據庫同步的操作:
>>配置發(fā)布服務器和分發(fā)服務器:
a.選中對應服務器的注冊名->工具->復制->配置發(fā)布、訂閱和分發(fā),直接按照默認設置向下執(zhí)行,直到完成。關閉。
b. 再一次選中這個服務器服務器的注冊名->工具->復制->配置發(fā)布、訂閱和分發(fā),可以看到這次界面和步驟a中的界面有所不同,我們只需 要配置一下 發(fā)布服務器,發(fā)布數據庫,訂閱服務器。(我的發(fā)布數據庫采用的是事物性的)。點“確定”完成操作。標記P>
> >創(chuàng)建發(fā)布,可以選中相應的注冊,用工具->復制->創(chuàng)建和管理發(fā)布或者在該注冊下面的 復制->發(fā)布內容 選中后,在右邊空白處,右鍵,新建發(fā)布,來創(chuàng)建你的發(fā)布。我選擇的是事物發(fā)布,按照默認設置,選擇你要發(fā)布的表或其他對象,其他地方不需要修改,直到完成 操作。
>>修改發(fā)布屬性:選擇“狀態(tài)”->立即運行代理程序;代理程序屬性->設置你的調度,比如一分鐘一次。(調度->編輯->更改;通知->寫入windows應用程序事件日志),"確定"完成操作。
>>創(chuàng)建訂閱:選擇發(fā)布服務器對應的注冊,復制->發(fā)布內容->在這個內容上右鍵,強制新訂閱,->"下一步",選擇訂閱服務器(在標記P那一步選擇的訂閱服務器)->“下一步”->選擇你有的數據庫,或者新建一個數據庫
->"下一步"-> 修改你需要的調度->按照默認設置,直到完成。
到 這里就可以完成了,修改發(fā)布服務器數據庫中的內容,等一兩分鐘,數據就同步到訂閱服務器中了。不過由于第一次執(zhí)行需要快照,如果發(fā)布庫中有一定的內容,第 一次執(zhí)行可能需要幾分鐘時間。如果數據不能同步過去,大家是調度設置時間太短(比如1分鐘)使快照不能完成,所以后面的步驟無法執(zhí)行,遇到這樣的情況的 話,
選中你發(fā)布的內容,設置屬性,在“狀態(tài)”中“立即運行代理程序”,這樣的話,數據會馬上同步過去的。
--------------------------------------------------------------------------------
http://www.itpub.net/showthread.php?threadid=558706
--------------------------------------------------------------------------------
http://blog.csdn.net/renzhe2008/relatedarticles/1717005.aspx