保持本地访问数据库与 SQL Azure 同步

问题描述

我是云支持的 VB5 销售点类型应用程序,该应用程序使用 Access 数据库 ('97) 安装在 40 个商店位置。我知道 - 坏主意,但这就是我的客户想要付钱给我做的 - 250,000 行代码,所以没有预算来重写它。

我计划创建一个 sql Azure 数据库并使用 API (PaaS) 来允许所有位置使用通用数据。

每个位置平均只有 100 次对单个会员表的数据库调用,以访问会员数据和奖励计划数据。

如果您有任何想法让本地 Access 数据库与 Azure 数据保持同步,我将不胜感激。我想在某个位置失去互联网连接的情况下这样做。我不认为我可以使用 Azure sql 同步,因为所有数据库都需要是 sql Server DB。我正在考虑简单地使用本地访问数据库作为缓存,每当成员第一次访问他们的成员 sql 数据时,检查上次更新日期是否不同,如果是,则更新访问数据库。也许更好的方法

解决方法

好吧,在 2009 年和 2010 年有一个用于 Access 的 .net 同步提供程序。它在 PDC 2009 上进行了演示。遗憾的是,用于 ms-access 的同步提供程序从未向公众发布。这将允许无缝同步到 Azure OS 上运行的 SQL。

但是,我因此会考虑在每个位置运行 SQL express。因此,您可以使 SQL express 版本成为 SQL Azure 的复制客户端(订阅者)。您可能会认为/认为数据库位于同一网络上的本地数据库,但实际上它允许所有位置共享相同的数据。

如果只有用于 re-wards 的表格 - 也许是一个新功能?然后只为那部分运行 SQL 服务器。但是,如果您需要所有位置共享数据和一个公共数据库,那么 SQL 服务器同步和复制将工作得很好,因为一切 + 软件都将在本地网络上运行,并命中 SQL express 的本地版本 - 但同步因此,部分将在您现在拥有的应用程序和代码库之外。

如果您知道自己在做什么,那么从 JET/mdb 到 SQL express 的迁移可以毫不费力地完成。如果 VB 应用程序使用 oleDB,或者说 ADO 代替 DAO(jet/Access)数据对象,这将非常重要。

因此,如果 VB 应用程序使用 ADO,那么转换为使用 SQL express 作为后端实际上是相当少的。所以现在在每个站点上运行 SQL express 很容易,而且它比基于 Access/JET 的后端更可靠(如果这些站点是多用户的)。我想如果每个站点都不是多用户,那么 JET 是一个很好的数据引擎,与设置、运行和安装 SQL express 相比,零安装表明您仍然可以使用 JET。

没有用于访问 SQL 服务器的同步客户端。所以,你可以考虑自己滚动。 (好吧,你必须这样做)。如前所述,另一种方法是在应用程序部分没有任何同步软件,并为此使用 sql server 同步(复制)。虽然 SQL express 的免费版不能成为主,但它们可以成为 SQL 服务器同步服务的客户端/订阅者。因此,您无需接触您的应用程序,而只需从 JET 迁移到 SQL express,然后同步部分在您的应用程序之外。