同步兩個數據庫

參考:
--引用鄒建
/*--同步兩個數據庫的示例sql

測試環境及同步要求:數據庫

有數據庫服務器srv1和srv2,兩臺電腦能互相訪問,有數據
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.實現同步處理spa

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

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

--修改同步
server

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
相關文章
相關標籤/搜索