*--同步两个数据库的示例
06 |
|
07 |
有数据 |
08 |
srv1.库名..author有字段:id, name ,phone, |
09 |
srv2.库名..author有字段:id, name ,telphone,adress |
10 |
|
11 |
要求: |
12 |
srv1.库名..author增加记录则srv1.库名..author记录增加 |
13 |
srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新 |
14 |
--*/ |
15 |
|
16 |
--大致的处理步骤 |
17 |
--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步 |
18 |
exec sp_addlinkedserver 'srv2' , '' , 'SQLOLEDB' , 'srv2的sql实例名或ip' |
19 |
exec sp_addlinkedsrvlogin 'srv2' , 'false' , null , '用户名' , '密码' |
20 |
go |
21 |
|
22 |
--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动 我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 |
23 |
go |
24 |
|
25 |
|
26 |
--3.实现同步处理 |
27 |
|
28 |
--a.在srv1..author中创建触发器,实现数据即时同步 |
29 |
--新增同步 |
30 |
create trigger tr_insert_author on author |
31 |
for insert |
32 |
as |
33 |
set xact_abort on |
34 |
insert srv2.库名.dbo.author(id, name ,telphone) |
35 |
select id, name ,telphone from inserted |
36 |
go |
37 |
|
38 |
--修改同步 |
39 |
create trigger tr_update_author on author |
40 |
for update |
41 |
as |
42 |
set xact_abort on |
43 |
update b set name =i. name ,telphone=i.telphone |
44 |
from srv2.库名.dbo.author b,inserted i |
45 |
where b.id=i.id |
46 |
go |
47 |
|
48 |
--删除同步 |
49 |
create trigger tr_delete_author on author |
50 |
for delete |
51 |
as |
52 |
set xact_abort on |
53 |
delete b |
54 |
from srv2.库名.dbo.author b,deleted d |
55 |
where b.id=d.id |
56 |
go |