• 定时同步服务器上的数据


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

     --测试环境,SQL   Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test  
      --服务器上的表(查询分析器连接到服务器上创建)  
      create   table   [user](id   int   primary   key,number   varchar(4),name   varchar(10))  
      go  

      --以下在局域网(本机操作)  
      --本机的表,state说明:

      --null   表示新增记录,
      --1      表示修改过的记录,
      --0   表示无变化的记录  

      if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[user]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
        drop   table   [user]  
      GO  
      create   table   [user](id int identity(1,1), number  varchar(4), name  varchar(10), state   bit)  
      go  

     
      --创建触发器,维护state字段的值  
      create   trigger   t_state   on   [user]  
      after   update  
      as  
      update   [user]   set   state=1  
      from   [user]   a   join   inserted   b   on   a.id=b.id  
      where   a.state   is   not   null  
      go  
         
      --为了方便同步处理,创建链接服务器到要同步的服务器  
      --这里的远程服务器名为:xz,用户名为:sa,无密码  
      if   exists(select   1   from   master..sysservers   where   srvname='srv_lnk')  
        exec   sp_dropserver   'srv_lnk','droplogins'  
      go  
      exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','xz'  
      exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'sa'  
      go  
         
      --创建同步处理的存储过程  
      if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_synchro]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
        drop   procedure   [dbo].[p_synchro]  
      GO  
      create   proc   p_synchro  
      as  
      --set     XACT_ABORT   on  
      --启动远程服务器的MSDTC服务  
      --exec   master..xp_cmdshell   'isql   /S"xz"   /U"sa"   /P""   /q"exec   master..xp_cmdshell   ''net   start   msdtc'',no_output"',no_output  
         
      --启动本机的MSDTC服务  
      --exec   master..xp_cmdshell   'net   start   msdtc',no_output  
         
      --进行分布事务处理,如果表用标识列做主键,用下面的方法  
      --BEGIN   DISTRIBUTED   TRANSACTION  
        --同步删除的数据  
        delete   from   srv_lnk.test.dbo.[user]  
          where   id   not   in(select   id   from   [user])  
         
        --同步新增的数据  
        insert   into   srv_lnk.test.dbo.[user]  
        select   id,number,name   from   [user]   where   state   is   null  
         
        --同步修改的数据  
        update   srv_lnk.test.dbo.[user]   set  
          number=b.number,name=b.name  
        from   srv_lnk.test.dbo.[user]   a  
          join   [user]   b   on   a.id=b.id  
        where   b.state=1  
         
        --同步后更新本机的标志  
        update   [user]   set   state=0   where   isnull(state,1)=1  
      --COMMIT   TRAN  
      go  
         
      --创建作业,定时执行数据同步的存储过程  
      if   exists(SELECT   1   from   msdb..sysjobs   where   name='数据处理')  
        EXECUTE   msdb.dbo.sp_delete_job   @job_name='数据处理'  
      exec   msdb..sp_add_job   @job_name='数据处理'  
         
      --创建作业步骤  
      declare   @sql   varchar(800),@dbname   varchar(250)  
      select   @sql='exec   p_synchro'       --数据处理的命令  
        ,@dbname=db_name()       --执行数据处理的数据库名  
         
      exec   msdb..sp_add_jobstep   @job_name='数据处理',  
        @step_name   =   '数据同步',  
        @subsystem   =   'TSQL',  
        @database_name=@dbname,  
              @command   =   @sql,  
        @retry_attempts   =   5,       --重试次数  
        @retry_interval   =   5         --重试间隔  
         
      --创建调度  
      EXEC   msdb..sp_add_jobschedule   @job_name   =   '数据处理',    
        @name   =   '时间安排',  
        @freq_type   =   4,           --每天  
        @freq_interval   =   1,         --每天执行一次  
        @active_start_time   =   00000     --0点执行  
      go   
          
       

  • 相关阅读:
    HDU 4607 Park Visit (DP最长链)
    HDU 4607 Park Visit (DP最长链)
    POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)
    POJ 2388 Who's in the Middle (快速选择算法:O(N)求数列第K大)
    HDU 4609 3-idiots (FFT-快速傅立叶变换)
    HDU 4609 3-idiots (FFT-快速傅立叶变换)
    POJ 3084 Panic Room (最小割建模)
    POJ 3084 Panic Room (最小割建模)
    POJ 1966 Cable TV Network (无向图点连通度)
    POJ 1966 Cable TV Network (无向图点连通度)
  • 原文地址:https://www.cnblogs.com/liunatural/p/1436312.html
Copyright © 2020-2023  润新知