zoukankan      html  css  js  c++  java
  • 同步两个数据库的示例

    原文出处:http://topic.csdn.net/t/20050602/13/4053922.html

      测试环境及同步要求:  
       
      有数据库服务器srv1和srv2,两台电脑能互相访问,有数据  
      srv1.库名..author有字段:id,name,phone,  
      srv2.库名..author有字段:id,name,telphone,adress  
       
      要求:  
      srv1.库名..author增加记录则srv2.库名..author记录增加  
      srv1.库名..author的phone字段更新,则srv2.库名..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  
       
       
       
       
      --3.实现同步处理的方法2,定时同步  
       
      --在srv1中创建如下的同步处理存储过程  
      create   proc   p_process    
      as  
      --更新修改过的数据  
      update   b   set   name=i.name,telphone=i.telphone  
      from   srv2.库名.dbo.author   b,author   i  
      where   b.id=i.id   and  
      (b.name<>i.name   or   b.telphone<>i.telphone)  
       
      --插入新增的数据  
      insert   srv2.库名.dbo.author(id,name,telphone)  
      select   id,name,telphone   from   author   i  
      where   not   exists(  
      select   *   from   srv2.库名.dbo.author   where   id=i.id)  
       
      --删除已经删除的数据(如果需要的话)  
      delete   b    
      from   srv2.库名.dbo.author   b  
      where   not   exists(  
      select   *   from   author   where   id=b.id)  
      go  
       
      --然后创建一个作业定时调用上面的同步处理存储过程就行了  
       
      企业管理器  
      --管理  
      --SQL   Server代理  
      --右键作业  
      --新建作业  
      --"常规"项中输入作业名称  
      --"步骤"项  
      --新建  
      --"步骤名"中输入步骤名  
      --"类型"中选择"Transact-SQL   脚本(TSQL)"  
      --"数据库"选择执行命令的数据库  
      --"命令"中输入要执行的语句:   exec   p_process    
      --确定  
      --"调度"项  
      --新建调度  
      --"名称"中输入调度名称  
      --"调度类型"中选择你的作业执行安排  
      --如果选择"反复出现"  
      --点"更改"来设置你的时间安排  
       
       
      然后将SQL   Agent服务启动,并设置为自动启动,否则你的作业不会被执行  
       
      设置方法:  
      我的电脑--控制面板--管理工具--服务--右键   SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.   
        
       

    原文出处:http://topic.csdn.net/t/20050602/13/4053922.html


     

  • 相关阅读:
    SoapUI 使用笔记
    git 使用笔记(二)
    git 使用笔记(一)
    jquery 拓展
    hdu 1024 Max Sum Plus Plus (DP)
    hdu 2602 Bone Collector (01背包)
    hdu 1688 Sightseeing (最短路径)
    hdu 3191 How Many Paths Are There (次短路径数)
    hdu 2722 Here We Go(relians) Again (最短路径)
    hdu 1596 find the safest road (最短路径)
  • 原文地址:https://www.cnblogs.com/liunatural/p/1436296.html
Copyright © 2011-2022 走看看