兩臺SQL Server數(shù)據(jù)同步解決方案_第1頁
兩臺SQL Server數(shù)據(jù)同步解決方案_第2頁
兩臺SQL Server數(shù)據(jù)同步解決方案_第3頁
兩臺SQL Server數(shù)據(jù)同步解決方案_第4頁
兩臺SQL Server數(shù)據(jù)同步解決方案_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、此文檔老孫從51cto上消費了好多豆豆才下載到的,老孫沒技術(shù),但直到這個文檔很有用。希望對大家有所幫助兩臺SQL Server數(shù)據(jù)同步解決方案(推薦)復(fù)制的概念復(fù)制是將一組數(shù)據(jù)從一個數(shù)據(jù)源拷貝到多個數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個存儲站點上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。復(fù)制技術(shù)可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性。SQL復(fù)制的基本元素包括出版服務(wù)器、訂閱服務(wù)器、分發(fā)服務(wù)器、出版物、文章SQL復(fù)制的工作原理SQL SERVER 主要采用出版物、訂閱的方式來處理復(fù)制。源數(shù)據(jù)

2、所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個分發(fā)數(shù)據(jù)庫,可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器SQL SERVER復(fù)制技術(shù)類型SQL SERVER提供了三種復(fù)制技術(shù),分別是:1、快照復(fù)制(呆會我們就使用這個)2、事務(wù)復(fù)制3、合并復(fù)制只要把上面這些概念弄清楚了那么對復(fù)制也就有了一定的理解。接下來我們就一步一步來實現(xiàn)復(fù)制的步驟。第一先來配置出版服務(wù)器(1)選中指定服務(wù)器節(jié)點(2)從工具下拉菜單的復(fù)制子菜單中選擇發(fā)布、訂閱服務(wù)器和分發(fā)命令(3)系統(tǒng)彈出一個對話框點下一步然后看著提示一直操作到完成

3、。(4)當(dāng)完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會為該服務(wù)器的樹形結(jié)構(gòu)中添加一個復(fù)制監(jiān)視器。同時也生成一個分發(fā)數(shù)據(jù)庫(distribution)第二創(chuàng)建出版物(1)選中指定的服務(wù)器(2)從工具菜單的復(fù)制子菜單中選擇創(chuàng)建和管理發(fā)布命令。此時系統(tǒng)會彈出一個對話框(3)選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊創(chuàng)建發(fā)布(4)在創(chuàng)建發(fā)布向?qū)У奶崾緦υ捒蛑袉螕粝乱徊较到y(tǒng)就會彈出一個對話框。對話框上的內(nèi)容是復(fù)制的三個類型。我們現(xiàn)在選第一個也就是默認(rèn)的快照發(fā)布(其他兩個大家可以去看看幫助)(5)單擊下一步系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,SQLSERVER允許在不同的數(shù)據(jù)庫如 ORACLE或ACCESS之間進(jìn)行

4、數(shù)據(jù)復(fù)制。但是在這里我們選擇運行SQL SERVER 2000的數(shù)據(jù)庫服務(wù)器(6)單擊下一步系統(tǒng)就彈出一個定義文章的對話框也就是選擇要出版的表(7)然后下一步直到操作完成。當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個共享數(shù)據(jù)庫。第三設(shè)計訂閱(1)選中指定的訂閱服務(wù)器(2)從工具下拉菜單中選擇復(fù)制子菜單的請求訂閱(3)按照單擊下一步操作直到系統(tǒng)會提示檢查SQL SERVER代理服務(wù)的運行狀態(tài),執(zhí)行復(fù)制操作的前提條件是SQL SERVER代理服務(wù)必須已經(jīng)啟動。(4)單擊完成。完成訂閱操作。完成上面的步驟其實復(fù)制也就是成功了。但是如何來知道復(fù)制是否成功了呢?這里可以通過這種方法來快速看是否成

5、功。展開出版服務(wù)器下面的復(fù)制發(fā)布內(nèi)容右鍵發(fā)布內(nèi)容屬性擊活狀態(tài)然后點立即運行代理程序接著點代理程序?qū)傩該艋钫{(diào)度把調(diào)度設(shè)置為每一天發(fā)生,每一分鐘,在0:00:00和23:59:59之間。接下來就是判斷復(fù)制是否成功了打開C:Program FilesMicrosoft SQL ServerMSSQLREPLDATAuncXIAOWANGZI_database_database下面看是不是有一些以時間做為文件名的文件夾差不多一分中就產(chǎn)生一個。要是你還不信的話就打開你的數(shù)據(jù)庫看在訂閱的服務(wù)器的指定訂閱數(shù)據(jù)庫下看是不是看到了你剛才所發(fā)布的表一個手工同步的方案-定時同步服務(wù)器上的數(shù)據(jù)-例子:-測試環(huán)境,SQ

6、L Server2000,遠(yuǎn)程服務(wù)器名:xz,用戶名為:sa,無密碼,測試數(shù)據(jù)庫:test-服務(wù)器上的表(查詢分析器連接到服務(wù)器上創(chuàng)建)create table user(id int primary key,number varchar(4),name varchar(10)go-以下在局域網(wǎng)(本機(jī)操作)-本機(jī)的表,state說明:null 表示新增記錄,1 表示修改過的記錄,0 表示無變化的記錄if exists (select * from dbo.sysobjects where id = object_id(Nuser) and OBJECTPROPERTY(id, NIsUserT

7、able) = 1)drop table userGOcreate table user(id int identity(1,1),number varchar(4),name varchar(10),state bit)go-創(chuàng)建觸發(fā)器,維護(hù)state字段的值create trigger t_state on userafter updateasupdate user set state=1from user a join inserted b on a.id=b.idwhere a.state is not nullgo-為了方便同步處理,創(chuàng)建鏈接服務(wù)器到要同步的服務(wù)器-這里的遠(yuǎn)程服務(wù)器名

8、為:xz,用戶名為:sa,無密碼if exists(select 1 from master.sysservers where srvname=srv_lnk)exec sp_dropserver srv_lnk,droploginsgoexec sp_addlinkedserver srv_lnk,SQLOLEDB,xzexec sp_addlinkedsrvlogin srv_lnk,false,null,sago-創(chuàng)建同步處理的存儲過程if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_synchro)

9、and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.p_synchroGOcreate proc p_synchroas-set XACT_ABORT on-啟動遠(yuǎn)程服務(wù)器的MSDTC服務(wù)-exec master.xp_cmdshell isql /Sxz /Usa /P /qexec master.xp_cmdshell net start msdtc,no_output,no_output-啟動本機(jī)的MSDTC服務(wù)-exec master.xp_cmdshell net start msdtc,no_output-進(jìn)行分布

10、事務(wù)處理,如果表用標(biāo)識列做主鍵,用下面的方法-BEGIN DISTRIBUTED TRANSACTION-同步刪除的數(shù)據(jù)delete from srv_lnk.test.dbo.userwhere id not in(select id from user)-同步新增的數(shù)據(jù)insert into srv_lnk.test.dbo.userselect id,number,name from user where state is null-同步修改的數(shù)據(jù)update srv_lnk.test.dbo.user setnumber=b.number,name=from srv_lnk

11、.test.dbo.user ajoin user b on a.id=b.idwhere b.state=1-同步后更新本機(jī)的標(biāo)志update user set state=0 where isnull(state,1)=1-COMMIT TRANgo-創(chuàng)建作業(yè),定時執(zhí)行數(shù)據(jù)同步的存儲過程if exists(SELECT 1 from msdb.sysjobs where name=數(shù)據(jù)處理)EXECUTE msdb.dbo.sp_delete_job job_name=數(shù)據(jù)處理exec msdb.sp_add_job job_name=數(shù)據(jù)處理-創(chuàng)建作業(yè)步驟declare sql varc

12、har(800),dbname varchar(250)select sql=exec p_synchro -數(shù)據(jù)處理的命令,dbname=db_name() -執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)庫名exec msdb.sp_add_jobstep job_name=數(shù)據(jù)處理,step_name = 數(shù)據(jù)同步,subsystem = TSQL,database_name=dbname,command = sql,retry_attempts = 5, -重試次數(shù)retry_interval = 5 -重試間隔-創(chuàng)建調(diào)度EXEC msdb.sp_add_jobschedule job_name = 數(shù)據(jù)處理,name = 時間安排,freq_type = 4, -每天freq

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論