关于更新访问频率的问题

时间:2010-06-14 20:30:38

标签: sql ms-access vba

我在访问数据库中有一个表

此访问数据库定期使用,基本上是从9-5

其他人拥有此确切表格的副本。有时会添加记录,有时会删除记录,有时记录中的数据会更新。

我需要每隔一小时左右用offsite表更新访问数据库表。更新数据的最佳算法是什么?大约有5000条记录。

它会每小时严重锁定桌子几秒钟吗?

我想就我对大卫芬顿的粗鲁评论公开道歉

4 个答案:

答案 0 :(得分:1)

如果几秒钟的性能至关重要,那么您宁愿转向更好的数据库引擎(如Sqlite,MySQL,MS SQL服务器)。如果你想要一个文件,那么Sqlite最适合你。所有这些都使用单记录锁,因此您可以同时读写。

如果您保持访问权限,则可能必须实施计时器,一次只更新几条记录。

答案 1 :(得分:1)

在你做任何事情之前,你需要建立“规则”,就碰撞而言。

如果更新本地副本中的行并更新远程副本中的同一行哪一个是“正确”版本?同样删除,插入甚至更痛苦,因为你可以拥有“相同”的值集,但可能是一个不同的键。

在您弄清楚如何处理这些案例后,您可以继续思考实施。

正如其他海报所建议的那样,完全避免这些问题的方法是切换到SQLServer或任何其他“适当的”数据库,所有用户都可以在网络上更新,并且在应用更新时DBMS会处理并发问题

答案 2 :(得分:1)

其他用户已经建议切换到基于服务器的数据库,即SQL服务器等。我会回应这个,并说这是最好的方法,但如果你遇到访问并且没有选择那么我会建议你添加一个沿着“Last Updated”行的字段(带索引)。然后,您可以导出在特定时间范围内已修改的所有记录。将此文件导出为CSV,将其发送到远程站点并将其导入“主”访问数据库。通过一些脚本编写,您可以自动执行此过程。

答案 3 :(得分:1)

我的印象是,这个问题将您一直在探索的问题与以前的问题联系在一起:

  1. 一个文件“侦听器”,用于检测是否存在新文件,并在找到时执行某些操作
  2. 列出文件夹中有一些扩展名的文件
  3. DoCmd.TransferText将文件数据提取到数据库中
  4. 根据导入的记录集
  5. 插入,更新,删除表中的记录

    也许是时候向我们提供一份关于你正在处理什么的更详细的信息。

    Tony问两个站点是否在同一个WAN(广域网)上。你回答说他们在Windows上。在其他地方,你说你正在使用网络。请告诉我们有关网络的信息。

    我仍然不确定您是需要单向还是双向数据交换。您已经讨论过将远程表中的更改导入本地主表。您是否需要在远程站点执行相同类型的操作:导入对主站点的表所做的更改?

    告诉我们詹姆斯提出的问题需要发生什么。本地和远程用户可以编辑同一条记录吗?如果他们可以,你将如何解决冲突?同样,如果远程用户更新记录并且本地用户删除了该记录的副本,会发生什么?

    根据您到目前为止告诉我们的内容,这听起来像Access的真正挑战,因记录变化率(每小时5,000次)而变得更具挑战性。我喜欢Kevin建议的大纲。但是,您的挑战将更加复杂,因为您还需要考虑两个站点的记录删除。

    您似乎可能需要创建复制Access'Replication功能的内容。也许您应该查看Jet Replication Wiki 以查看是否可以修改您的设计以利用复制。我无法帮助你,不幸的是你似乎对David Fenton感到沮丧,他是Jet Replication的主要权威。