JOB+MERGE跨服务器同步数据

2014-11-24 14:09:56 · 作者: · 浏览: 1
JOB+MERGE跨服务器同步数据
为了解决单服务器压力,将库分服务器部署,但是原来用触发器实现的表数据同步就实现不了了。
因为总监老大不允许 开启分布式事务(MSDTC),我又不想为了一个几千行的基础数据做复制订阅。
于是乎决定用 JOB+MERGE的方式实现。
第一步 创建一个存储过程(当然也可以直接写到JOB中)
CREATE PROCEDURE PRC_SYNC_DATA  
AS  
BEGIN  
    SET NOCOUNT ON  
    --跨库跨服务器同步A到B (A,B 表结构相同)  
    --通过条件判断 相同则 更新  不同则插入  
    merge   [guagua_vas_statistics].[dbo].[t_base_goods] t --要更新的目标表   
    using [192.168.1.75,18991].[guagua_goods].[dbo].[t_base_goods] s --源表   
    on t.base_goods_id=s.base_goods_id --更新条件(即主键)   
    when matched --如果主键匹配,更新   
    then update set t.name=s.name,t.unit_name=s.unit_name  
                    ,t.depletable=s.depletable,.......  
    when not matched   
    then insert values([base_goods_id],[name],[unit_name],[depletable],....)  
    when not matched by source then   
        delete ; --目标中存在源中没有的记录时删除。此处by source不能省略   
          
  
END