• (转)关于SQL SERVER数据同步自己的一些设计经验


    原文地址:

    http://www.cnblogs.com/thtfria/archive/2012/04/04/2432167.html

    不过这个项目已经过去N天但是数据同步部分起初是我的一些设计思想。这个项目是某电力公司的一卡通项目,这个项目将来需要在全国20几个分厂都要做。

      按照项目的要求基础数据在总部存储,然后同步到各个分厂。里面一些详细的需求不详说了。直接进入正题。

      同步方式:数据库之间的同步,不再做程序上的干涉了。

      实现步骤:  

          1、总部的表建立触发器,来记录对表的增、删、改的动作,将动作记录到一张中间表中(中间表需要加一个同步标记的字段来表示数据是否已经被同步过)

    CREATE trigger [TG_JC_ZZJG] on [dbo].[JC_ZZJG]
    for insert,delete,update
    as
    begin
    -- 插入 1
    IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
    begin
    INSERT INTO T_JC_ZZJG
    (CZLX,BH,MC,QMC,SJBH,LXR,LXDH,LXDZ,BZ,GSBJ,GSBH)
    select 1,i.BH,i.MC,i.QMC,i.SJBH,i.LXR,i.LXDH,i.LXDZ,i.BZ,i.GSBJ,i.GSBH
    from inserted i
    end
    -- 更新 2
    IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
    begin
    INSERT INTO T_JC_ZZJG
    (CZLX,BH,MC,QMC,SJBH,LXR,LXDH,LXDZ,BZ,GSBJ,GSBH)
    select 2,u.BH,u.MC,u.QMC,u.SJBH,u.LXR,u.LXDH,u.LXDZ,u.BZ,u.GSBJ,u.GSBH
    from inserted u
    end
    -- 删除 3
    IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
    begin
    INSERT INTO T_JC_ZZJG
    (CZLX,BH,GSBH)
    select 3,d.BH,D.GSBH
    from deleted d
    end
    end

          2、分厂建立远程连接

            //添加远程连接

    EXEC sp_addlinkedserver @server = 'ZBEZCAS',@srvproduct='',@provider = 'SQLOLEDB',@provstr = 'DRIVER={SQL       Server};SERVER='127.0.0.1';UID='sa';PWD='sa';

            //设置连接连接的登录名

            EXEC sp_addlinkedsrvlogin 'ZBEZCAS','false',NULL,'sa','sa'

          3、分厂建立同义词,来简化访问表(这步只是简化操作,没有别的太大意思)

            CREATE SYNONYM T_JC_ZZJG FOR ZBEZCAS.EZCAS.DBO.T_JC_ZZJG

          4、分厂执行同步数据,完毕后回写同步标记为“已同步”

            具体的同步方法使用的是存储过程,直接同步T_JC_ZZJG (被简化后的远程表)表中没有被同步的数据即可,同步完回写同步标记。

     

  • 相关阅读:
    Vue GET xxxx/sockjs-node/info?t=1573626343344 net::ERR_CONNECTION
    NavigationDuplicated Navigating to current location (“/XXX”) is not allowed
    node-sass报错(Node Sass could not find a binding for your current environment)
    DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead
    VSCODE 中.art文件识别为html文件
    gulp4.0构建任务
    gulp报错The following tasks did not complete
    setTimeout()
    格式化日期
    作业1.3
  • 原文地址:https://www.cnblogs.com/fcsh820/p/2434357.html
Copyright © 2020-2023  润新知