同步两个数据库

/*  

  作者:邹建  

  */  

  

  /*--同步两个数据库的示例  

  

  有数据  

  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  

你可能感兴趣的:(数据库)