1

我目前在一个 4 人团队中,负责开发和维护旧版 MS Access 应用程序。

该应用程序非常大,有数百个表单、报告、查询和表格。

目前,我们将前端分为大约 7 个 mde 组件,每个组件本质上都是一个应用程序,并由一个通用前端连接,该前端本质上只是一个菜单 GUI。

我们使用链接表将此前端连接到 MS Access 后端,在代码本身中使用 OpenDatabase(C:\access.mdb) 调用。这个应用程序已经存在了一段时间,因此使用 DAO 连接到 Access 97 后端。

这意味着应用程序的每个用户都有自己的数据库本地副本以进行更改。我们有一个精心控制变更的环境,确保一次只有一个人可以处理数据,他们必须在将主数据库传递给下一个人之前验证所有更改。

委婉地说,这种变更控制环境令人窒息,很快我们将需要在一个时间范围内进行更多的数据更改,这使得单用户访问变得不可行。

所以,我们需要转向多用户访问,但多用户我的意思是只有大约 4 人。这些人可能不在同一个办公室,因此需要某种形式的远程数据库连接。

整个应用程序可能会在一两年内重新设计,将前端和后端都从 MS Access 移开。但是,我们需要尽快进行多用户访问。

那么,多用户幸福的最快途径是什么?

我们正在考虑的建议包括:

  • 设置 VPN 以便 MS Access 认为它​​正在访问常规网络驱动器。这看起来会很慢,我不确定 VPN 是否足够可靠,但这只是我们追求的临时解决方案。
  • 将 mdb 后端转换为供多用户远程使用的东西,例如 SQL Server。我们只是不知道如何快速轻松地做到这一点(例如,我们依赖于字段验证规则)我们可能还必须转换回 MS Access 格式,因为其他应用程序接受相同的 .mdb 文件作为数据输入。
  • 几乎可以由 1 或 2 个人在几个月内完成的任何事情。

编辑:回应以下评论。

应用程序处理的数据是高度安全的关键数据。它很少更改,并且在导出之前必须经过验证以显示没有逻辑错误。实际上,数据比应用程序本身受到更重的限制!

数据以非平凡的方式相互关联。因此,由于复杂的业务逻辑,对一个表中的记录的更改可能会使另一个表中的记录无效。因此,目前,mdb 数据文件的一份副本被指定为主数据库。任何时候只有一个人拥有主人。如果要对其进行更改,则必须从当前拥有该数据库的人那里获取该数据库。这通常不是问题,因为数据更改很少,以至于有足够的时间发生这种情况。

然而,一个巨大的变化即将到来,我们没有足够的时间来以这种方式工作。我们必须让多人同时处理数据。现在我知道您可以在网络驱动器上共享 mdb 文件,并让同一个办公室的多人在几乎没有风险的情况下处理该文件,但我们需要来自不同公司的人员同时处理数据. 据我了解,设置 VPN 来共享数据是一个糟糕的计划。

我相信我们必须将后端从 MS Access 更改为类似 SQL Server 的东西。但是以这种方式转换模式有多容易?SQL Server 中如何表示 MS Access 表验证规则?

4

3 回答 3

1

作为一般规则,该框的访问权限是作为文件共享访问多用户。这意味着您可以获取后端数据库(mdb 文件)并将其放在服务器上的共享文件夹中。这将允许您办公室中的几个人同时运行该应用程序。然而,这意味着我们谈论的是典型的办公室局域网。当您开始谈论远程连接、VPN 和广域网 (WANS) 时,将访问用作文件共享并不稳定。

因此,如果在典型的办公网络环境中只有三四个人,那么根据应用程序,很可能您可以简单地将后端放在服务器上的共享文件夹中,并继续将所有前端部署在每个计算机,并且它们链接到共享文件夹上的那个数据库后端 (mdb) 文件。MS 访问以这种方式运行得很好。

但是,对于某种 VPN 或 WAN,一种可能的解决方案是将后端 mdb 文件移动到 SQL 服务器,并继续使用当前应用程序中的所有表单、报告等(您的大部分应用程序将运行和以前一样,当你这样做时)。

另一个值得考虑的真正伟大的技术是瘦客户端,或所谓的终端服务。终端服务只是远程桌面系统的一个花哨版本。TS 允许人们在相当有限的带宽上从远程位置运行和使用应用程序。

但是,如果您在一个典型的办公室 LAN 上谈论三到四个用户,那么您的应用程序很可能只需很少修改即可运行,您只需将后端数据库文件移动到某处服务器上的共享文件夹中。但是,我不能强调,这只有在所有人都在同一个小型办公室 LAN 上时才有效,而不是某种远程连接或 WAN/VPN。所以,在WAN/VPN的情况下,使用终端服务,或者考虑将后端移到SQL server,继续使用应用前端。


编辑 - 更多信息:好的,所以有了更多信息,我们可以继续前进。如前所述,ms-access 是开箱即用的多用户。您需要来自不同地点的人员来处理这些数据。因此,这意味着无论这个不同的位置问题如何,您的应用程序都必须设置为具有多用户功能。一旦您为多用户设置了应用程序,那么您就可以解决允许人们从不同位置使用该软件的问题。

这与我们管理公司圣诞晚会没有什么不同。如果我们有这样的设计,即在圣诞晚会之后我们删除整个文件以重新开始明年的圣诞晚会,那么我们仍然可以允许此应用程序的多种用途。但是,由于您的设计,您不能同时进行多个圣诞派对。所以在这种情况下,应用程序不是多用户的事实。在这种情况下,实际上可能会添加一个名为圣诞派对年表的新表。然后可以将应用程序中的所有表作为子表关联到该主表。这样一来,您就可以为这个设计同时举办多个圣诞派对。然后当你启动应用程序时,

所以不要混淆上述两个单独的问题。询问终端服务如何允许应用程序成为多用户是没有意义的,它没有这样的事情。TS 所做的是允许您使用已经是多用户的应用程序,并允许来自远程位置的人使用该应用程序。所以 TS 是一个系统,它允许人们在互联网上的任何地方从远程位置运行和使用应用程序。但是,您的设计仍将决定您的申请是否允许我们同时参加一个以上的圣诞派对。

所以你不要让 MS 访问多用户,MS 访问是开箱即用的多用户而且你不需要做任何事情,除了采用一些技术让不同位置的用户使用应用程序。所以,这就是 TS 所做的,SQL Server 也可以为您做。

如果您的设计只允许一个项目,那么我们可以允许来自世界各地的多个用户使用一个应用程序,但由于应用程序的设计限制,他们只能拥有一个活动项目。

所以你所有的表更新逻辑等都可以像以前一样工作。您只需要问一下,该应用程序现在是否允许一个用户退出该应用程序,而另一个用户进入该应用程序并进行工作?假设办公室里只有一台独立计算机。不同的员工可以在一天中坐下来为他们的每个单独项目使用那台计算机和一个带有一个后端的应用程序吗?

因此,使用 SQL 服务器或终端服务不会使您的应用程序比现在更多(或更少)多用户。这些技术当然可以增加同时使用该应用程序的用户数量。

所以MS访问现在是多用户的。然而,SQL Server 或 TS 所做的是在用户如何远程连接到此应用程序方面提供更大的灵活性。

于 2009-06-30T14:40:55.667 回答
0

IMO 无论您考虑什么其他解决方案,您都肯定需要将数据库转换为多用户服务器。有一个升迁向导应该证明是有用的 ( http://support.microsoft.com/kb/237980 ),您可能会遇到 Access 允许的项目,而 SQL Server 不允许,但在大多数情况下应该是无痛的。您可以将本地访问副本指向使用这个新的数据源(例如通过 ODBC),我相信它应该以几乎相同的方式工作。多年没有这样做了,不知道那些字段验证规则(它们不会还在表单上吗?)会变成什么。您可以下载 SQL Server 的试用版,并在不到一个小时的时间内完成此操作,以了解它需要付出多少努力。

于 2009-06-30T14:40:23.327 回答
0

像往常一样,您从 Albert Kalal 那里得到了很好的回答。

如果您想考虑升级到 SQL Server,可以使用 SQL Server 组中的工具。SQL Server Migration Assistant for Access (SSMA Access) http://www.microsoft.com/sql/solutions/migration/access/default.mspx 比 Access Upsizing Wizard 更好。

另请参阅我在 Microsoft Access Tips 页面上对 SQL Server Upsizing 的随机想法,网址为http://www.granite.ab.ca/access/sqlserverupsizing.htm

正如您在发布的评论中看到的那样,您的组织使用的术语变更控制是非传统的并且相当有趣。虽然我可以看到几年前有人试图找出远程办公室更改数据的解决方案会想出这个解决方案。我也可以看到它是如何令人窒息的。

于 2009-06-30T19:02:13.707 回答