【问题标题】:How to migrate a Access database to be available by multiple users from anywhere如何迁移 Access 数据库以供来自任何地方的多个用户使用
【发布时间】:2015-12-15 17:04:44
【问题描述】:

假设我有一个访问文件(或将两个文件拆分为一个包含数据的文件和一个前端文件)。我想向不同位置的用户提供此功能。

以前有人问过这个问题,但有些答案是旧的,例如

list here

SO 2879281 here

SO 11979044 here

SO 32667061 here

似乎有很多方法可以实现这一点,我只是想征求意见,看看我是否错过了任何选择:

这些选项都有优点和缺点。最显着的区别在于:

  • 成本和时间
  • 需要重写access数据库才能在SQL Server中
  • 前端需要重写
  • 同时使用。
  • 解决方案的可扩展性和性能。
  • 使用 SQL Server 存储数据。
  • 简单!

这是我看到的选项。

1.创建一个链接到 sql server 数据的桌面前端文件。

每个用户在 PC 上都有自己的前端文件副本。您自己管理自己的 SQL Server 数据库/实例或使用 MS Azure 或类似的 Web 服务。 (有免费版的SQL Server可以在服务器上安装使用,也可以我们

优点:您不需要重新编写前端文件。

缺点:您需要一个 SQL Server 实例。您需要迁移数据表(并且您可能需要做一些工作以在 SQL Server 中复制它们,特别是如果您有数据宏或使用特殊数据类型(如是/否、多选组合框和其他一些) . 有免费工具可以完成大部分迁移,而付费工具可以完成更多迁移。

2。将文件存储在 Dropbox 或类似设备上,便于共享

如果一次只有一个用户需要更新数据库,则此方法有效。

将文件存储在 Dropbox 上并使用类似here 描述的 vbscript 将文件从 Dropbox 抓取到本地磁盘,允许用户对其进行更新,然后将其放回 Dropbox。 (如果其他用户抓取了文件,则使用一种机制来阻止其他用户抓取文件。)。如果其他用户抓取文件进行更新,则可以调整此方法以允许用户抓取文件用于只读目的。

注意,这种方法最大限度地减少了重写数据库的需要,并且可以使用免费的在线文件存储,方便共享

请注意,可以将 2 修改为自动更新存储在用户 PC 上的前端文件,如选项 1 中所建议的那样。

优点:便宜!最小的变化。

缺点:一次只有一个用户更新。您需要编写相当复杂的 VB 脚本。您需要为每个用户手动设置 Dropbox 并同步到 C 盘。

3.使用 Access 2010 创建 Web 应用程序。(数据存储在 Sharepoint 列表中,表单使用宏响应用户操作。信息here 和视频演示here

缺点:一种“老派”的做法 - Access 2013 更好。

4.使用 Access 2013 Web 应用程序。 这会将数据存储在 SQL Server 中,并使用新的 Access 功能来提供 Web GUI(即视图)。您还可以从桌面访问前端访问相同的 SQL Server 数据(用于报告等)。

缺点:对于 3 和 4

您创建的“表单”没有桌面前端那么好的功能,因为无法使用 VBA - 而是使用宏。但这在很多情况下都可以。

需要订阅共享点,这可能会阻止您的数据库被广泛使用,因为(大多数)用户将需要共享点帐户。

您可能需要重新编写现有的访问表单。 优点:使用 SQL Server 时更具可扩展性。使用 Access 轻松创建和管理。

5.使用虚拟托管桌面服务器。 mentioned here 例如Amazon Web services

我需要这方面的帮助。据我了解,这可能非常昂贵。我有以下问题:

5a:每个用户都需要“订阅”他们自己的工作空间吗?这些工作空间是否需要 MS Access/office 许可证? (例如,如果是这样,亚马逊将是 40 美元/用户/月),或者您可以只使用 Access 运行时(因此亚马逊将只有 25 美元/用户/月)。

5b。每个用户的工作区是否可以链接到存储在文件服务器上的相同访问数据文件,或者一个工作区是否可以访问另一个工作区文件。拥有一个文件服务器是有成本的。

6.使用第三方软件。

例如 $50/用户/月 EQL Data plugin 声称能够在 Web 浏览器中运行未经修改的 Access 应用程序。

缺点:昂贵! ? 优点:可能比上述其他方法更容易。

7.停止使用 MS Access 并使用另一种语言编写或重写整个数据库。

这始终是一个选项。我的主要问题是,如果您精通 Access 和 VB 或 C#,是否会创建相同的应用程序。在 Access 中比在 VB、java、C#(等)中更快。我的朋友用 JAVA 编写应用程序,他们需要很长时间才能在几分钟内完成我可以在 Access 中完成的事情。此外,Access 的优点在于,通常是“最终用户”为自己创建数据库,并为他们提供所需的东西。

8.将 Access 中的数据放大到 SharePoint

SO here除外

您可以将 Access 中的数据放大到 SharePoint(或低成本 office 365)。 SharePoint 表现在支持关系数据,因此当您将 Access 表移动到 SharePoint 时,支持“基本”主到子表(和级联删除)(但是您仅限于自动编号的 PR,并且子记录(外键)必须是一个很长的数字。

根据数据的大小和行数,上述解决方案通常比将表移动到 SQL 服务器更好。此设置的一个非常好的功能是您的应用程序可以在没有任何 Internet 连接的情况下继续运行。当您找到一些 Wi-Fi 等时,您的数据就会同步。

所以我不会取消 SharePoint 表的选项,因为它们可以很好地与多种 Access 应用程序配合使用,包括具有相关表的应用程序。 “离线”模式非常适合那些在现场没有互联网连接的笔记本电脑。

9.使用teamViewer 等远程控制软件 允许使用远程PC 和数据库。一次只允许一个用户!

【问题讨论】:

  • 这在很大程度上取决于您考虑的是新应用程序还是现有应用程序。对于现有的,#5 是最简单的,因为它需要零重新编码,而#1 可能是最便宜的运行,因为您可以使用免费的 SQL Server Express 版本。对于新人来说,这主要取决于需求以及 - 实际上 - 您的技能和偏好。

标签: database vba ms-access-2010


【解决方案1】:

最便宜的方式(恕我直言):

8。将您的数据表移动到 SQL Server 并保留 MS Access 前端

  • 使用 Upsizing wizard 将您的共享 Microsoft Access 数据库(仅包含表)转换为 SQL Server 数据库。

  • 因为现在您在 Access client 应用程序中连接到 MS SQL

    • 更改表位置(连接字符串现在指向 MS SQL 数据库)
    • 在您的 VBA 代码中,手动将包含 Access 特定语法的 SQL 查询更新为标准化 SQL(逻辑上 - 升迁向导无法在代码中看到它们,因此无法自动转换它们)

完成。

当然,这可能会有一些陷阱,但在我这样做的时候(它是 Access 97 和 SQL Server 95),升迁过程没有任何错误完成,并且包括 VBA 更新在内的完整迁移在大约半天之内完成.

如果你完成了这个过程,你可以继续使用 Access 前端,如果你有兴趣,你可以慢慢开始重新评估你是否会更新到另一个前端。如果您身边有一些 Access 程序员,他们可能会对 感到满意,因为 VBA → VB.NET 比 VBA → C# 更加原生。我实际上已经做到了,我对 VB.NET 非常满意。在 C# 中可以使用的所有尖端技术在 VB.NET 中也可以使用。

关于 SQL 服务器:您可以使用免费的SQL Server Express 版本,直到您对它的限制感到满意为止。目前它是 10 GB 的数据库大小和单 CPU(但多核)。

【讨论】:

  • 感谢您的回复。让我的最终用户在任何地方都可以使用 SQL Server 实例的最便宜的方法是什么?我目前没有任何服务器,只有家里的台式电脑(上面有 SQLServer express 的副本)。
  • @HarveyFrench – 嗨,哈维,我不确定这是问题还是评论。
  • 我认为这对我来说是最好的选择:azure.microsoft.com/en-gb/services/sql-database Any cmets?
  • 值得注意的是,还有其他很棒的数据库 - SQL Server 非常棒,但如果 Express 版本过于链接,它就会开始花钱。 MySql 是“LAMP”堆栈中的“M”,即完全生产能力和免费。就我个人而言,我想试一试 Postgre——它具有 SQL 标准的最高命令并且是免费的。据我了解,Access 前端有一个数据源,并不关心该源是 sql server、mysql 等。我们可以考虑 Amazon RDS,托管数据库:没有服务器管理员aws.amazon.com/rds。当然,MS 也有等价的
  • 将表迁移到我的 sql 中要困难得多,因为据我所知没有迁移助手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多