我在笔记本电脑上使用多个(相同架构)访问2003数据库时遇到了问题。
我需要找到一种将数据同步到中央访问数据库的自动方式。
笔记本电脑上的数据仅附加到更新/删除操作,因此不会出现问题。
哪些工具可以让我轻松完成? 哪些因素会影响对最佳工具或解决方案的决策?
答案 0 :(得分:6)
访问复制可能很笨拙,因为您只需要附加查询和一些检查,最好自己编写一些东西。如果每台笔记本电脑收集的数据不能重叠,这可能不会太困难。
您需要考虑主键。最好将用户或笔记本电脑名称合并到密钥中,以确保记录正确相关。
答案 1 :(得分:6)
可以使用Access中内置的Jet复制,但我会警告你,它非常不稳定。它会在你执行它的任何表上搞乱你的PK因为它选择随机有符号整数来尝试避免键冲突,所以你可能最终得到-1243482392912作为你给定记录的下一个PK。如果您正在对其进行任何类型的查找(例如客户ID,订单号等),那就是输入的PITA。您无法自动执行Access同步(也许您可以通过使用VBA伪造类似的东西。但仍然,只有在打开数据库时才会运行。)
我建议的方法是在“中央”数据库上使用SQL Server 2005/2008,并使用SQL Server Express Edition作为“远程”数据库的后端,然后在Access中使用链接表连接到这些SSEE数据库并进行复制以同步它们。设置merge replication or snapshot replication作为发布者的“中央”数据库和作为订阅者的SSEE数据库。与Access Jet复制不同,您可以控制PK编号,但对您而言,这不会成为问题,因为您的订阅者不会推动更改。
除了SQL服务器带来的可扩展性之外,您还可以使用Windows同步管理器自动执行此操作(如果您有同步文件夹,那就是弹出并在登录/注销时同步它们的烦人小盒子),并设置它up,以便在给定的时间间隔,启动,关闭或一天中的某个时间和/或计算机空闲时进行同步,或者仅按需同步。即使Access未运行一个月,每次用户连接到网络时都可以更新其数据集。很酷的东西。
答案 2 :(得分:4)
答案 3 :(得分:1)
您应该阅读Access Database Replication,因为那里有一些信息。
但我认为,为了使其与您的应用程序一起正常运行,您必须使用methods and properties available为此目的推出自定义解决方案。
如果需要以编程方式控制Microsoft Access数据库中副本集成员之间的数据交换和设计信息(仅限.mdb文件),请使用Jet和复制对象(JRO)。例如,您可以使用JRO编写一个过程,该过程在用户打开数据库时自动将用户副本与集合的其余部分同步。要以编程方式复制数据库,必须关闭数据库。
如果您的数据库是使用Microsoft Access 97或更早版本创建的,则必须使用数据访问对象(DAO)以编程方式复制和同步它。
您可以使用DAO方法和属性在以前版本的Microsoft Access中创建和维护复制数据库。如果需要对副本集成员之间的数据交换和设计信息进行编程控制,请使用DAO。例如,您可以使用DAO编写一个过程,在用户打开数据库时自动将用户副本与集合的其余部分同步。
您可以使用以下方法和属性来创建和维护复制数据库:
MakeReplica
方法Synchronize
方法ConflictTable
propertyDesignMasterID
propertyKeepLocal
propertyReplicable
propertyReplicaID
propertyReplicationConflictFunction
propertyMicrosoft Jet提供了这些额外的方法和属性,用于创建和维护部分副本(包含完整副本中记录子集的副本):
ReplicaFilter
propertyPartialReplica
propertyPopulatePartial
方法
您一定要阅读文档的the Synchronizing Data部分内容。
答案 4 :(得分:0)
我在a00中使用复制多年,直到被迫升级到a07(当它消失时)。我们在企业级遇到的最棘手的问题是管理 CONFLICTS 。如果不及时管理,或者太多,用户会感到沮丧,数据变得不可靠。
当我们的远程站点并不总是连接到互联网时,复制确实运行良好。这使他们能够处理他们的数据,并在他们可以的时候进行同步。每天至少两次。
我们在管理同步的远程计算机上安装了一个单独的数据库,因此用户只需单击其桌面上的图标即可唤起同步。
用户有一个单独的按钮,可以从指定的FTP文件中推送/拉入Feed,该文件将从旧版系统更新。
这个过程非常有效,因为我们有30个这样的节点"在全国各地工作,管理他们的数据并更新到FTP服务器。
如果您正在认真考虑这条道路,请告诉我,我可以将您的文件发给您。
答案 5 :(得分:-2)
您可以编写自己的同步软件,连接到笔记本电脑,从它的数据库中选择差异并将其插入主服务器。 这取决于您的数据方案,此操作将是多么容易。 (如果你有许多FK表...你需要巧妙地做到这一点)。 我认为如果你自己写的话会最有效率。
自动化这种行为称为复制,并且显然可以访问Supports,但我从未见过它。
我猜大多数时候笔记本电脑没有连接到主数据库,无论如何都不是一个好主意(复制数据)。
如果您要寻找第三方工具来做 - 在复制之前寻找可以轻松地在表之间进行差异的东西,并且当然可以逐步进行。
答案 6 :(得分:-2)
FWIW: