程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> MSSQL 數據庫同步教程

MSSQL 數據庫同步教程

編輯:MSSQL

MSSQL 數據庫同步教程。本站提示廣大學習愛好者:(MSSQL 數據庫同步教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MSSQL 數據庫同步教程正文


制的概念
復制是將一組數據從一個數據源拷貝到多個數據源的技巧,是將一份數據宣布到多個存儲站點上的有用方法。應用復制技巧,用戶可以將一份數據宣布到多台辦事器上,從而使分歧的辦事器用戶都可以在權限的允許的規模內同享這份數據。復制技巧可以確保散布在分歧所在的數據主動同步更新,從而包管數據的分歧性。
SQL復制的根本元素包含
出書辦事器、定閱辦事器、分發辦事器、出書物、文章
SQL復制的任務道理
SQLSERVER重要采取出書物、定閱的方法來處置復制。源數據地點的辦事器是出書辦事器,擔任揭橥數據。出書辦事器把要揭橥的數據的一切轉變情形的拷貝復制到分發辦事器,分發辦事器包括有一個分發數據庫,可吸收數據的一切轉變,並保留這些轉變,再把這些轉變分發給定閱辦事器

SQLSERVER復制技巧類型

SQLSERVER供給了三種復制技巧,分離是:

1、快照復制(呆會我們就應用這個)
2、事務復制
3、歸並復制

只需把下面這些概念弄清晰了那末對復制也就有了必定的懂得。接上去我們就一步一步來完成復制的步調。

第一先來設置裝備擺設出書辦事器
(1)選中指定[辦事器]節點
(2)從[對象]下拉菜單的[復制]子菜單當選擇[宣布、定閱辦事器和分發]敕令
(3)體系彈出一個對話框點[下一步]然後看著提醒一向操作到完成。
(4)當完成了出書辦事器的設置今後體系會為該辦事器的樹形構造中添加一個復制監督器。同時也生成一個分發數據庫(distribution)

第二創立出書物
(1)選中指定的辦事器
(2)從[對象]菜單的[復制]子菜單當選擇[創立和治理宣布]敕令。此時體系會彈出一個對話框
(3)選摘要創立出書物的數據庫,然後單擊[創立宣布]
(4)在[創立宣布領導]的提醒對話框中單擊[下一步]體系就會彈出一個對話框。對話框上的內容是復制的三個類型。我們如今選第一個也就是默許的快照宣布(其他兩個年夜家可以去看看贊助)
(5)單擊[下一步]體系請求指定可以定閱該宣布的數據庫辦事器類型,SQLSERVER許可在分歧的數據庫如ORACLE或ACCESS之間停止數據復制。然則在這裡我們選擇運轉"SQLSERVER2000"的數據庫辦事器
(6)單擊[下一步]體系就彈出一個界說文章的對話框也就是選摘要出書的表
(7)然後[下一步]直到操作完成。當完成出書物的創立後創立出書物的數據庫也就釀成了一個同享數據庫。

第三設計定閱

(1)選中指定的定閱辦事器
(2)從[對象]下拉菜單當選擇[復制]子菜單的[要求定閱]
(3)依照單擊[下一步]操作直到體系會提醒檢討SQLSERVER署理辦事的運轉狀況,履行復制操作的條件前提是SQLSERVER署理辦事必需曾經啟動。
(4)單擊[完成]。完成定閱操作。
完成下面的步調其實復制也就是勝利了。然則若何來曉得復制能否勝利了呢?這裡可以經由過程這類辦法來疾速看能否勝利。睜開出書辦事器上面的復制——宣布內容——右鍵宣布內容——屬性——擊活——狀況然後點立刻運轉署理法式接著點署理法式屬性擊活調劑把調劑設置為每天產生,每分鐘,在0:00:00和23:59:59之間。接上去就是斷定復制能否勝利了翻開C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database上面看是否是有一些以時光做為文件名的文件夾差不多一分中就發生一個。如果你還不信的話就翻開你的數據庫看在定閱的辦事器的指定定閱數據庫下看是否是看到了你適才所宣布的表—
一個手工同步的計劃

--准時同步辦事器上的數據
--例子:
--測試情況,SQLServer2000,長途辦事器名:xz,用戶名為:sa,無暗碼,測試數據庫:test
--辦事器上的表(查詢剖析器銜接到辦事器上創立)
createtable[user](idintprimarykey,numbervarchar(4),namevarchar(10))
go
--以下在局域網(本機操作)
--本機的表,state解釋:null表現新增記載,1表現修正過的記載,0表現無變更的記載
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[user]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[user]
GO
createtable[user](idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)
go
--創立觸發器,保護state字段的值
createtriggert_stateon[user]
afterupdate
as
update[user]setstate=1
from[user]ajoininsertedbona.id=b.id
wherea.stateisnotnull
go
--為了便利同步處置,創立鏈接辦事器到要同步的辦事器
--這裡的長途辦事器名為:xz,用戶名為:sa,無暗碼
ifexists(select1frommaster..sysserverswheresrvname='srv_lnk')
execsp_dropserver'srv_lnk','droplogins'
go
execsp_addlinkedserver'srv_lnk','','SQLOLEDB','xz'
execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa'
go
--創立同步處置的存儲進程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_synchro]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
dropprocedure[dbo].[p_synchro]
GO
createprocp_synchro
as
--setXACT_ABORTon
--啟動長途辦事器的MSDTC辦事
--execmaster..xp_cmdshell'isql/S"xz"/U"sa"/P""/q"execmaster..xp_cmdshell''netstartmsdtc'',no_output"',no_output
--啟動本機的MSDTC辦事
--execmaster..xp_cmdshell'netstartmsdtc',no_output
--停止散布事務處置,假如表用標識列做主鍵,用上面的辦法
--BEGINDISTRIBUTEDTRANSACTION
--同步刪除的數據
deletefromsrv_lnk.test.dbo.[user]
whereidnotin(selectidfrom[user])
--同步新增的數據
insertintosrv_lnk.test.dbo.[user]
selectid,number,namefrom[user]wherestateisnull
--同步修正的數據
updatesrv_lnk.test.dbo.[user]set
number=b.number,name=b.name
fromsrv_lnk.test.dbo.[user]a
join[user]bona.id=b.id
whereb.state=1
--同步後更新本機的標記
update[user]setstate=0whereisnull(state,1)=1
--COMMITTRAN
go
--創立功課,准時履行數據同步的存儲進程
ifexists(SELECT1frommsdb..sysjobswherename='數據處置')
EXECUTEmsdb.dbo.sp_delete_job@job_name='數據處置'
execmsdb..sp_add_job@job_name='數據處置'
--創立功課步調
declare@sqlvarchar(800),@dbnamevarchar(250)
select@sql='execp_synchro'--數據處置的敕令
,@dbname=db_name()--履行數據處置的數據庫名
execmsdb..sp_add_jobstep@job_name='數據處置',
@step_name='數據同步',
@subsystem='TSQL',
@database_name=@dbname,
@command=@sql,
@retry_attempts=5,--重試次數
@retry_interval=5--重試距離
--創立調劑
EXECmsdb..sp_add_jobschedule@job_name='數據處置',
@name='時光支配',
@freq_type=4,--天天
@freq_interval=1,--天天履行一次
@active_start_time=00000--0點履行
go
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved