參考:
--引用鄒建
/*--同步兩個數據庫的示例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