从远程SQL库更新本地ACCESS库(100分)

  • 主题发起人 主题发起人 zhangrf
  • 开始时间 开始时间
Z

zhangrf

Unregistered / Unconfirmed
GUEST, unregistred user!
请问实现从远程SQL2000数据库中指定的表中的数据更新到本地access库中(sql到access),而且只下载被更新的内容?
 
只是为使Client端,不用频繁访问服务器,只需要定时更新一下新据然后就在本地查询就可了?
 
服务器端表中设置一个字段,用于标识是否下传,更新后改变其值
 
是否下传可以用楼上说的方法<br><br>建议下载数据后,直接把ACCESS里面的表删除掉,然后直接再新建表比较好。<br>理由如下:<br>1、为了实现更新比较,势必要下载服务器端的所有数据,否则无法知道哪些是新增数据<br>2、既然数据要全部下载了,那么全部记录比较更新的时间肯定比表清除直接增加表要慢,特别在记录数多的情况下。
 
首先谢谢两位的回复!<br>设计目的是为了加快本地数据的查询速度和减轻服务器负担!<br><br>我的数据变动十分频繁,大概每分钟都会有数据修改删除添加等操作,如果让客户端的本地库与远端同步更新,势必会频繁下载覆盖本地库,这样如果数据库小也就凑合,可如果日积月累数据库庞大,那下载更新反而成了一种负担,与其不如就直接访问远程数据库。但考虑到用户数据大,如果实时接接服务器查询一是造成带宽不足,二是无法离线操作。。。。。<br><br>苦啊,还望高手指点迷津,只要有思路行的通,代码我自己能够完成,并愿意公布于此,谢谢!
 
要不就全更新,要不就更新差别的,各有各的优势。<br>数据更新频繁的情况,对于差别更新的方法也未必就不适用。<br><br>1、你每次进入软件之前,肯定要先pack一下本地的ACCESS,这个无论对哪种方法都是必要的;<br>2、我比较倾向动态差别更新,服务器端通过触发器,在别的地方建立一个对照表,比如:<br><br>动作 &nbsp; 内容 &nbsp; &nbsp; 编号 &nbsp;时间 <br>UPDATE TABLE1 &nbsp;10005 &nbsp;08-01-10 15:05<br>DELETE TABLE2 &nbsp;9995 &nbsp; 08-01-10 15:07<br>......<br>不过前提是服务器端的表和连结数不要太多了,想象不出几百的触发器同时操作服务器的负载是怎样,而且维护触发器也要累死人。<br>然后客户端就是每分钟刷一下这个表就知道要做什么动作了。<br><br>这样的局限就是针对 单向 操作比较有效,就是说本地的不要再向服务器端写东西了,因为一写势必更新了内容,又把内容都回来处理,产生垃圾操作。<br><br>补充一下,本地的表也需要有个 最后更新时间 的字段,好查询本地究竟更新到什么程度,不过总的来说,这样的方式是有缺陷的:就是一旦更新不成功,处理得不好,就会漏纪录;而全更新就没有这样的问题,但全更新就速度上没法达到需求。<br>如果能够两者结合就最好了,定期全更新,实时差异更新。
 
数据库的信息来源就是这些客户端发布上的,为了使这些客户端之间共享他们发往远程数据库的信息,所以才要实时更新,又为了减轻服务器压力,所以想将数据下载到本地进行查询,又为了下载速度快,所以才进行差异更新,这一系列的过程就是为了一个目的“及时准确”,如果能达到这一目的有其它方法也行。谢谢大家广开思路。。。。。
 
楼主是否可以把你的时间要求量化一下,还有每次下载的数据量。
 
更新时间可以定分10分钟,自动与服务器同步一次数据,每次下载量可能以当时发布或修改或删除的变动有关,随着用户量的增加和每个用户发布信息量的不确认性,暂时还没法估计。
 
如果数据比较单一,那就 触发器都不用做了,就是增加一个最后更新时间字段,然后大家都去查更新时间不就可以了?
 
那对于已经删除的数据就无法处理了,总觉得应该还有更好的方法呀?
 
后退
顶部