同步两个数据库

/*  
  作者:邹建  
  */  
  
  /*--同步两个数据库的示例  
  
  有数据  
  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  
posted @ 2009-11-15 09:36  曾祥展  阅读(3405)  评论(1编辑  收藏  举报