實現不同資料庫同步更新資料

2021-06-08 22:06:15 字數 2724 閱讀 6775

【原文】

/*--同步兩個資料庫中兩個表的示例 

測試環境及同步要求: 

有資料庫伺服器srv1和srv2,兩台電腦能互相訪問,有資料 

srv1.庫名..author有欄位:id,name,phone, 

srv2.庫名..author有欄位:id,name,telphone,adress 

要求: 

srv1.庫名..author增加記錄則srv2.庫名..author記錄增加 

srv1.庫名..author的phone欄位更新,則srv2.庫名..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 --3.實現同步處理 

--a.在srv1..author中建立觸發器,實現資料即時同步 

--新增同步 

create trigger tr_insert_author on author 

for insert 

as set xact_abort on --如果執行 transact-sql 語句產生執行時錯誤,則整個事務將終止並回滾。

insert srv2.庫名.dbo.author(id,name,telphone) 

select id, name, telphone from inserted 

go --修改同步 

create trigger tr_update_author on author 

for update 

as set xact_abort on 

update b set name=i.name,telphone=i.telphone 

from srv2.庫名.dbo.author b,inserted i 

where b.id=i.id 

go --刪除同步 

create trigger tr_delete_author on author 

for delete 

as set xact_abort on 

delete b 

from srv2.庫名.dbo.author b,deleted d 

where b.id=d.id 

go 上面的觸發器是同步更新到鏈結的同構sql server伺服器上的,如果鏈結伺服器不是24小時都可用的,則要定時提交更新 

--在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** 

--右鍵作業 

--新建作業 

--"常規"項中輸入作業名稱 

--"步驟"項 

--新建 

--"步驟名"中輸入步驟名 

--"型別"中選擇"transact-sql 指令碼(tsql)" 

--"資料庫"選擇執行命令的資料庫 

--"命令"中輸入要執行的語句: exec p_process 

--確定 

--"排程"項 

--新建排程 

--"名稱"中輸入排程名稱 

--"排程型別"中選擇你的作業執行安排 

--如果選擇"反覆出現" 

--點"更改"來設定你的時間安排 

然後將sql agent服務啟動,並設定為自動啟動,否則你的作業不會被執行 

總結:1. 這個是用於同構的sql server伺服器之間的同步

2. 沒有採用增量同步技術,直接對比兩張表找出不同,大資料量下不適用。

///  csdn類似資源 //

利用資料庫複製技術 實現資料同步更新

複製是將一組資料從乙個資料來源拷貝到多個資料來源的技術,是將乙份資料發布到多個儲存站點上的有效方式。使用複製技術,使用者可以將乙份資料發布到多台伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分布在不同地點的資料自動同步更新,從而保證資料的一致性。sql複...

利用資料庫複製技術 實現資料同步更新

利用資料庫複製技術 實現資料同步更新 複製的概念 複製是將一組資料從乙個資料來源拷貝到多個資料來源的技術,是將乙份資料發布到多個儲存站點上的有效方式。使用複製技術,使用者可以將乙份資料發布到多台伺服器上,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。複製技術可以確保分布在不同地點...

android實現資料庫和UI同步更新

實現類似 本顯示的功能,情景如下 一部新手機 本為空,開啟 本,空顯示,此時用91助手從pc匯入 號碼,此時 本的ui同步顯示出來。實現如上方法,要用到2個方面的知識,cursoradapter和observer package listview import android.content.con...