使用Sql Server的DTS包,可以定时执行,也可以设转换条件。

解决方案 »

  1.   

    DTS可以对比两表中的记录,变动的记录才转换。
      

  2.   

    同意使DTS,
    看看这个http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39142303,00.htm
      

  3.   

    diskA(薛獅) :
    怎么对比呢?我尝试使用sql语句进行两边的表比照,如果有不同的记录则查到b的相应表中去,一般为一分钟左右,发现速度反而不如将整张表删除重建导入来得快,只需四十多秒。
    不过这两种速度都不是我能接受的,还有更好的方法吗?
    实际上它们每次需要更新的记录至多几百条啊!
      

  4.   

    如果数据量不大的话使用触发器就可以
    大数据量使用brightheroes的方法
      

  5.   

    我的前提是不修改a,a只管发布数据,工作都由b完成,b完成工作可以,但不要对a造成太大的影响。
      

  6.   

    如果你的程序有数据中间层的话,在所有的更改A的语句后更改b。
    或者所有的insert,delete,update语句通过一个公用函数来执行,在函数中
    向b也执行一次。这个办法效率最高。
      

  7.   

    变通了一下:
    将任务分解为两步:
    1 倒数据
      dts的任务很单纯了,只负责倒数据
    2 比较
      数据导入到b库后,再由sql语句在两张本地表之间比较,不同的执行插入操作新的问题来了:
    a库中的目标表是流水表,每天都会产生一张新的,dts里面只能指定具体的表,每天手工修改dts包是不现实的,如何由外部程序指定呢?
    大虾指点则个....
      

  8.   

    一个不用编程的方法:
    在sql server 建立一个DTS.设定固定时间,比如12:00到数据,可以不用编程序的,到数据前将原来的sql server数据删除,然后重新倒入.你可以试试.这样操作在oracle这几张表数据量不是很大的情况下进行
      

  9.   

    [数据转换服务]-->[本地包]->右键->[新建包]....
      

  10.   

    PB 建立的PipeLine直接导还快些。
      

  11.   

    DTS包的责任已经很明确,并且已经建立可以工作了,现在问题的焦点是:
    DTS要导的目标表是变化的(流水表,每天都会产生),怎么解决这个问题?
      

  12.   

    利用Sql Server的Sql server agent, 可以写Windows Script脚本,调用COM.将你的数据访问,包括表生成的逻辑放在COM中,然后通过agent调用,定期执行就行了。我觉得这样比较简单
      

  13.   

    DTS包的责任已经很明确,并且已经建立可以工作了,现在问题的焦点是:
    DTS要导的目标表是变化的(流水表,每天都会产生),怎么解决这个问题?急啊,大虾帮忙!