azure - 保持 prem 访问数据库与 SQL Azure 同步
问题描述
我是云启用 VB5 销售点类型的应用程序,该应用程序使用 Access 数据库 ('97) 安装在 40 个商店位置。我知道 - 坏主意,但这就是我的客户想要付钱给我做的 - 250,000 行代码,所以没有预算来重写它。
我计划创建一个 SQL Azure 数据库并使用 API (PaaS) 来允许所有位置使用公共数据。
每个位置对于访问成员数据和奖励计划数据的单个成员表平均只有 100 次 DB 调用。
我将不胜感激保持本地 Access 数据库与 Azure 数据同步的任何想法。我想在某个位置失去互联网连接的情况下这样做。我认为我不能使用 Azure SQL Sync,因为所有数据库都需要是 SQL Server DB。我正在考虑简单地将本地访问数据库用作缓存,并且每当成员首次访问其成员 sql 数据时,检查最后更新日期是否不同,如果是,则更新访问数据库。也许更好的方法?
解决方案
嗯,在 2009 年和 2010 年有一个用于 Access 的 .net 同步提供程序。它在 PDC 2009 上进行了演示。遗憾的是,ms-access 的同步提供程序从未向公众发布。这将允许无缝同步到在 Azure OS 上运行的 SQL。
但是,因此我会考虑在每个位置运行 SQL express。因此,您可以将 SQL Express 版本作为 SQL Azure 的复制客户端(订阅者)。您可能会认为/认为数据库在您的同一网络上是本地的,但实际上它允许所有位置共享相同的数据。
如果只有奖励表 - 也许是一个新功能?然后只为那部分运行 SQL 服务器。但是,如果您需要所有位置来共享数据和一个公共数据库,那么 SQL Server 同步和复制会很好地工作,因为所有东西 + 软件都将在本地网络上运行,并点击本地版本的 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,然后同步部分就在您的应用程序之外。
推荐阅读
- javascript - Vue.JS、Axios、CanvasJS - 从 API 获取数据并填充/渲染图表
- c++ - 错误与
在 C++、Windows 中使用库时 - sql-server - VM 和主机之间的 SQL 链接服务器配置
- sharepoint-online - SharePoint SPFX(无框架)如何从 onclick 调用函数
- architecture - 具有 API 网关和微服务的 Blazor 服务器指南
- java - 使用 getResourceAsStream() 从子包访问资源文件夹
- flutter - Getter 方法返回空值
- html - 使用 Jsoup 获取 iframe src 链接
- c - 以 HEX 格式获取浮点数
- r - 检查 R 中跨波的多个列中的重叠