程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 通過SQL SERVER 觸發器實現跨庫同步

通過SQL SERVER 觸發器實現跨庫同步

編輯:關於SqlServer

有兩個服務器,分別裝有兩個SQL Server A ,B

A,B的表結構a,b 相同

A,B分別都會做一些INSERT,UPDATE,DELETE操作,要求AB的數據保持一致

(即A新增一條數據,要求B也新增,A更改一條數據,B也更改相應的)

是不是可以用觸發器來實現

例程

/*--同步兩個數據庫的示例

有數據

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

--3.實現同步處理

--a.在srv1..author中創建觸發器,實現數據即時同步

--新增同步

create trigger tr_insert_author on author

for insert

as

set xact_abort on

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved