複製的概念
microsoft? SQL Server? 2000 的複製是在資料庫之間對資料和資料庫物件進行複製和分發並進行同步以確保其一致性的一組技術。
使用複製可以將資料分發到不同位置,通過區域網路、使用撥號連線、通過 Internet 分發給遠程或移動使用者。複製還能夠使使用者提高應用程式效能,根據資料的使用方式物理分隔資料(例如,將聯機交易處理 (OLTP) 和決策支援系統分開),或者跨越多個伺服器分布資料庫處理。
---------------------------------------------------------------------------
SQL複製的基本元素包括
發行伺服器、訂閱伺服器、散發者、發布、項目
發行伺服器
發行伺服器是提供資料以便複製到其它伺服器的伺服器。發行伺服器可以具有一個或多個發布,每個發布代表一組邏輯相關的資料。除了指定其中哪些資料需要複製之外,發行伺服器還檢測事務複製期間發生更改的資料並維護有關此網站上所有發布的資訊。
散發者
散發者是作為散發資料庫宿主並儲存曆史資料和/或事務以及中繼資料的伺服器。散發者的角色根據執行的複製類型而不同。有關更多資訊,請參見複製類型。遠端散發者是獨立於發行伺服器並配置為複製的散發者的伺服器。本機散發者是既配置為複製的發行伺服器又配置為複製的散發者的伺服器。
訂閱伺服器
訂閱伺服器是接收複製資料的伺服器。訂閱伺服器訂閱的是發布而不是發布中分離的項目;並且訂閱伺服器只訂閱其需要的發布,而不是發行伺服器上所有可用的發布。根據複製的類型和所選擇的複製選項,訂閱伺服器還可以將資料更改傳播回傳布伺服器或將資料重新發布到其它訂閱伺服器。
發布
發布是一個資料庫中的一個或多重專案的集合。這種多重專案的分組使得指定邏輯相關的一組資料和資料庫物件以一起複製變得更容易。
項目
項目是指定要複製的資料表、資料分區或資料庫物件。項目可以是完整的表、某幾列(使用垂直篩選)、某幾行(使用水平篩選)、預存程序或視圖定義、預存程序的執行、視圖、索引檢視表或使用者定義函數。
訂閱
訂閱是對資料或資料庫物件的複本的請求。訂閱定義將接收的發布和接收的時間、地點。訂閱的同步或資料分發可以由發行伺服器(強制訂閱)或訂閱伺服器(提取訂閱)請求。發布可以支援強制訂閱和提取訂閱的混合。
---------------------------------------------------------------------------
SQL複製的工作原理
SQL SERVER 主要採用出版物、訂閱的方式來處理複製。來源資料所在的伺服器是出版伺服器,負責發表資料。出版伺服器把要發表的資料的所有改變情況的拷貝複製到散發者散發者包含有一個散發資料庫,可接收資料的所有改變,並儲存這些改變,再把這些改變分發給訂閱伺服器
---------------------------------------------------------------------------
SQL SERVER複製技術類型,三種複製技術,分別是(詳細的說明參考SQL線上說明):
1、快照式複寫
2、事務複製
3、合併式複寫
============================================================================
下介紹實現複製的步驟。(以快照式複寫為例)
準備工作:
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下面看是不是有一些以時間做為檔案名稱的檔案夾差不多一分中就產生一個。
SQL 複製過程的注意事項
(雲中客 http://blog.csdn.net/sxycgxj/archive/2005/09/30/492765.aspx)
1、設定共用複製目錄:
\\\\computer_machine\\C$...\\..如果伺服器取消過預設的共用($)則會失敗;此時建立一個目錄,並賦予許可權,目錄改為:\\\\computer_machine\\共用目錄名
2、建立用於發布應用的windows帳號
3、在配置散發者時遭遇了 錯誤18483 提示因為未在該伺服器上定義為遠程登陸,故無法建立
解決方案:(運行以下程式)
USE master
GO
--設定兩個變數
DECLARE @serverproperty_servername varchar(100),
@servername varchar(100)
--取得Windows NT 伺服器和與指定的 SQL Server 執行個體關聯的執行個體資訊
--具體可以看聯機叢書"SERVERPROPERTY"
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
--返回運行 microsoft® SQL Server™ 的本機伺服器名稱
--具體可以看聯機叢書@@SERVERNAME
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
--如果@serverproperty_servername和@servername不同(因為你改過電腦名稱字),再運行下面的
--刪除錯誤的伺服器名
EXEC sp_dropserver @server=@servername
--添加正確的伺服器名
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
另外分別可對兩台伺服器做維護計劃,進行定期備份操作
這樣就可以確保有伺服器資料有多個備份,保證了資料的安全性