1. 程式人生 > >SQLServer2000同步複製技術實現操作步驟

SQLServer2000同步複製技術實現操作步驟

一、 預備工作

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