有个数据同步的方案
给远程服务器每个表加timestamp字段,每次读取,先从服务器获取所有table主键跟timestamp,比较本地数据再根据timestamp变化情况。每次读取记录最大timestamp,下次只读取大于这个时间戳的数据。我想请问下:如何读取最大的timestamp?因为时间戳是实时更新的,除非是每次更新完后都有个字段记录他的上一次更新时间
@@DBTS读取的是当前时间戳,而不是上一次更新的最大值。
这样是不是同步的双向表都要加个记录timestamp的上次值的字段呢

解决方案 »

  1.   

    select max(timestamp字段) from table可以查询到 最大时间戳
    select @@DBTS from table
    为什么值都是0x0000000000000FA0
      

  2.   

    @@DBTS是定值变量,非字段
    select 1 from table 为什么值都是1?
      

  3.   

    msdn:@@DBTS 返回当前数据库最后使用的时间戳值
    请问不是最大时间戳吗?
      

  4.   

    时间戳没有大小,只是标记,@@DBTS返回当前时间戳,就是最后一次使用的时间戳,如果你指的大小是最后一次使用,那就是它。
      

  5.   

    用timestamp,每次同步数据都需要全库扫描一次喔.注意性能问题.
      

  6.   

    TIMESTAMP 在SQLserver里是全库唯一的,都会往上增长。
    你远程服务器上的表都增加一个TMSTAMP字段,使用TIMESTAMP类型,那目的库是否也可以增加一个TMSTAMP字段,类型BIGINT,你同步的时候将远程的CONVERT(BIGINT,TMSTAMP)同步到本地,那本地的最大时间戳就是一个节点,每次同步只要比这个值大的数据导过来就可以了。这个适合简单的数据增长,如果中间数据有修改的话就比较复杂了。
      

  7.   

    对了,你的业务需求如果不想自己做的话,有一款数据库同步软件能够满足你的需求统一数据传输系统(UTS)是一款网络应用集成解决方案,涵盖文件传输、数据库跨平台传输与发布,以及FTP服务等多个领域,可以广泛应用于网络传输、信息备份、数据发布和网络服务领域,是网络管理的必备服务工具。最新版本3.02.07301对个人客户完全免费,无任何使用功能限制,具有如下主要功能:
    一、数据库同步传输
    1、全面支持Sql Server、Oracle和MySql交互数据传输;
    2、通过各自的时间戳技术,对变更数据即时发布和传输;
    3、通过最大兼容各版本和各差别字段,实现一套数据库向多类数据库的同步与发布;
    4、可以支持ODBC、OLE DB和直接连接多种方式,满足各种速度或者精度方面要求;
    5、支持字段同步、索引同步