*--同步两个数据库的示例
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 |