1. 程式人生 > >資料庫同步複製技術

資料庫同步複製技術

SQLServer2000同步複製技術實現步驟 作者:gaojier 日期:2007-06-25 字型大小: 小 中 大 一、 預備工作 1.釋出伺服器,訂閱伺服器都建立一個同名的windows使用者,並設定相同的密碼,做為釋出快照資料夾的有效訪問使用者 --管理工具 --計算機管理 --使用者和組 --右鍵使用者 --新建使用者 --建立一個隸屬於administrator組的登陸windows的使用者(SynUser) 2.在釋出伺服器上,新建一個共享目錄,做為釋出的快照檔案的存放目錄,操作: 我的電腦--D:/ 新建一個目錄,名為: PUB --右鍵這個新建的目錄 --屬性--共享 --選擇"共享該資料夾" --通過"許可權"按紐來設定具體的使用者許可權,保證第一步中建立的使用者(SynUser) 具有對該資料夾的所有許可權 --確定 3.設定SQL代理(SQLSERVERAGENT)服務的啟動使用者(釋出/訂閱伺服器均做此設定) 開始--程式--管理工具--服務 --右鍵SQLSERVERAGENT --屬性--登陸--選擇"此賬戶" --輸入或者選擇第一步中建立的windows登入使用者名稱(SynUser) --"密碼"中輸入該使用者的密碼 4.設定SQL Server身份驗證模式,解決連線時的許可權問題(釋出/訂閱伺服器均做此設定) 企業管理器 --右鍵SQL例項--屬性 --安全性--身份驗證 --選擇"SQL Server 和 Windows" --確定 5.在釋出伺服器和訂閱伺服器上互相註冊 企業管理器 --右鍵SQL Server組 --新建SQL Server註冊... --下一步--可用的伺服器中,輸入你要註冊的遠端伺服器名 --新增 --下一步--連線使用,選擇第二個"SQL Server身份驗證" --下一步--輸入使用者名稱和密碼(SynUser) --下一步--選擇SQL Server組,也可以建立一個新組 --下一步--完成 6.對於只能用IP,不能用計算機名的,為其註冊伺服器別名(此步在實施中沒用到)   (在連線端配置,比如,在訂閱伺服器上配置的話,伺服器名稱中輸入的是釋出伺服器的IP) 開始--程式--Microsoft SQL Server--客戶端網路實用工具 --別名--新增 --網路庫選擇"tcp/ip"--伺服器別名輸入SQL伺服器名 --連線引數--伺服器名稱中輸入SQL伺服器ip地址 --如果你修改了SQL的埠,取消選擇"動態決定埠",並輸入對應的埠號 二、 正式配置 1、配置釋出伺服器 開啟企業管理器,在釋出伺服器(B、C、D)上執行以下步驟: (1) 從[工具]下拉選單的[複製]子選單中選擇[配置釋出、訂閱伺服器和分發]出現配置釋出和分發嚮導 (2) [下一步] 選擇分發伺服器 可以選擇把釋出伺服器自己作為分發伺服器或者其他sql的伺服器(選擇自己) (3) [下一步] 設定快照資料夾 採用預設//servername/Pub (4) [下一步] 自定義配置 可以選擇:是,讓我設定分發資料庫屬性啟用釋出伺服器或設定釋出設定 否,使用下列預設設定(推薦) (5) [下一步] 設定分發資料庫名稱和位置 採用預設值 (6) [下一步] 啟用釋出伺服器 選擇作為釋出的伺服器 (7) [下一步] 選擇需要釋出的資料庫和釋出型別 (8) [下一步] 選擇註冊訂閱伺服器 (9) [下一步] 完成配置 2、創建出版物 釋出伺服器B、C、D上 (1)從[工具]選單的[複製]子選單中選擇[建立和管理髮布]命令 (2)選擇要創建出版物的資料庫,然後單擊[建立釋出] (3)在[建立釋出嚮導]的提示對話方塊中單擊[下一步]系統就會彈出一個對話方塊。對話方塊上的內容是複製的三個型別。我們現在選第一個也就是預設的快照發布(其他兩個大家可以去看看幫助) (4)單擊[下一步]系統要求指定可以訂閱該釋出的資料庫伺服器型別, SQLSERVER允許在不同的資料庫如 orACLE或ACCESS之間進行資料複製。 但是在這裡我們選擇執行"SQL SERVER 2000"的資料庫伺服器 (5)單擊[下一步]系統就彈出一個定義文章的對話方塊也就是選擇要出版的表 注意: 如果前面選擇了事務釋出 則再這一步中只能選擇帶有主鍵的表 (6)選擇釋出名稱和描述 (7)自定義釋出屬性 嚮導提供的選擇: 是 我將自定義資料篩選,啟用匿名訂閱和或其他自定義屬性 否 根據指定方式建立釋出 (建議採用自定義的方式) (8)[下一步] 選擇篩選釋出的方式 (9)[下一步] 可以選擇是否允許匿名訂閱 1)如果選擇署名訂閱,則需要在釋出伺服器上新增訂閱伺服器 方法: [工具]->[複製]->[配置釋出、訂閱伺服器和分發的屬性]->[訂閱伺服器] 中新增 否則在訂閱伺服器上請求訂閱時會出現的提示:改釋出不允許匿名訂閱 如果仍然需要匿名訂閱則用以下解決辦法 [企業管理器]->[複製]->[釋出內容]->[屬性]->[訂閱選項] 選擇允許匿名請求訂閱 2)如果選擇匿名訂閱,則配置訂閱伺服器時不會出現以上提示 (10)[下一步] 設定快照 代理程式排程 (11)[下一步] 完成配置 當完成出版物的建立後創建出版物的資料庫也就變成了一個共享資料庫。 ---------------------------- --參考: /* 作者:鄒建 */ /*--同步兩個資料庫的示例 有資料 srv1.庫名..author有欄位:id,name,phone, srv2.庫名..author有欄位:id,name,telphone,adress 要求: srv1.庫名..author增加記錄則srv1.庫名..author記錄增加 srv1.庫名..author的phone欄位更新,則srv1.庫名..author對應欄位telphone更新 --*/ --大致的處理步驟 --1.在  srv1  上建立連線伺服器,以便在  srv1  中操作  srv2,實現同步 exec  sp_addlinkedserver    'srv2','','SQLOLEDB','srv2的sql例項名或ip' exec  sp_addlinkedsrvlogin  'srv2','false',null,'使用者名稱','密碼' go --2.在  srv1  和  srv2  這兩臺電腦中,啟動  msdtc(分散式事務處理服務),並且設定為自動啟動 我的電腦--控制面板--管理工具--服務--右鍵  Distributed  Transaction  Coordinator--屬性--啟動--並將啟動型別設定為自動啟動 go --然後建立一個作業定時呼叫上面的同步處理儲存過程就行了 企業管理器 --管理 --SQL  Server代理 --右鍵作業 --新建作業 --"常規"項中輸入作業名稱 --"步驟"項 --新建 --"步驟名"中輸入步驟名 --"型別"中選擇"Transact-SQL  指令碼(TSQL)" --"資料庫"選擇執行命令的資料庫 --"命令"中輸入要執行的語句:  exec  p_process  --確定 --"排程"項 --新建排程 --"名稱"中輸入排程名稱 --"排程型別"中選擇你的作業執行安排 --如果選擇"反覆出現" --點"更改"來設定你的時間安排 然後將SQL  Agent服務啟動,並設定為自動啟動,否則你的作業不會被執行 設定方法: 我的電腦--控制面板--管理工具--服務--右鍵  SQLSERVERAGENT--屬性--啟動型別--選擇"自動啟動"--確定. --3.實現同步處理的方法2,定時同步 --在srv1中建立如下的同步處理儲存過程 create  proc  p_process  as --更新修改過的資料 update  b  set  name=i.name,telphone=i.telphone from  srv2.庫名.dbo.author  b,author  i where  b.id=i.id  and (b.name <> i.name  or  b.telphone <> i.telphone) --插入新增的資料 insert  srv2.庫名.dbo.author(id,name,telphone) select  id,name,telphone  from  author  i where  not  exists( select  *  from  srv2.庫名.dbo.author  where  id=i.id) --刪除已經刪除的資料(如果需要的話) delete  b  from  srv2.庫名.dbo.author  b where  not  exists( select  *  from  author  where  id=b.id) go     SQL SERVER 2005 同步複製技術 以下實現複製步驟(以快照複製為例) 執行平臺SQL SERVER 2005 一、準備工作: 1.建立一個 WINDOWS 使用者,設定為管理員許可權,並設定密碼,作為釋出快照檔案的有效訪問使用者。 2.在SQL SERVER下實現釋出伺服器和訂閱伺服器的通訊正常(即可以互訪)。開啟1433埠,在防火牆中設特例 3.在釋出伺服器上建立一個共享目錄,作為釋出快照檔案的存放目錄。例如:在D盤根目錄下建資料夾名為SqlCopy 4.設定SQL 代理(釋出伺服器和訂閱伺服器均設定)本篇文章發表於www.xker.com(小新技術網) 開啟服務(控制面板---管理工具---服務) ---右擊SQLSERVER AGENT---屬性---登入---選擇“此帳戶“ ---輸入或選擇第一步中建立的WINDOWS 使用者 ---“密碼“中輸入該使用者密碼 5.設定SQL SERVER 身份驗證,解決連線時的許可權問題(釋出、訂閱伺服器均設定) 步驟為:物件資源管理器----右擊SQL例項-----屬性----安全性----伺服器身份驗證------選“SQL Server和WINDOWS“,然後點確定 6.開啟SQL Server 2005的網路協議TCP/IP和管道命名協議並重啟網路服務。 7.在SQL Server中建立步驟1中對應的系統使用者登陸名,作為釋出資料庫的擁有者(設定為dbo_owner和public)。 8.以系統超級使用者sa登陸SQL Server建立資料庫和表。 9.釋出伺服器和訂閱伺服器互相註冊 步驟如下:檢視----單擊以註冊伺服器----右鍵資料庫引擎----新建伺服器註冊-----填寫要註冊的遠端伺服器名稱------身份驗證選“SQL Server驗證“-----使用者名稱(sa) 密碼------建立組(也可不建)-----完成。 10.對於只能用IP,不能用計算機名的,為其註冊伺服器別名 二、開始: 釋出伺服器配置(在釋出伺服器上配置釋出和訂閱) 1. 選擇 複製 節點 2. 右鍵本地釋出 ----下一步---------系統彈出對話方塊看提示----直到“指定快照資料夾“ ----在“快照資料夾“中輸入準備工作中建立的目錄(指向步驟3所建的共享資料夾)------選擇釋出資料庫-------選擇釋出型別-------選擇訂閱伺服器型別-------選擇要釋出的物件------設定快照代理-------填寫釋出名稱。本篇文章發表於www.xker.com(小新技術網) 3. 右鍵本地訂閱--------選擇釋出伺服器-------選擇訂閱方式(如果是在伺服器方訂閱的話選擇推送訂閱反之 選擇請求訂閱)-------填加訂閱伺服器--------選擇代理計劃(一般選擇連續執行)---------其餘選擇預設項。 至此, SQL SERVER 2005 同步複製就完成了。使用複製技術,使用者可以將一份客戶端的資料釋出到多臺伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分佈在不同地點的資料自動同步更新,從而保證資料的一致性,就無需程式設計實現客戶端和伺服器端資料同步了!大大提高了工作效率!