MS Access 前端:有哪些风险?

MS Access front-end: What are the risks?

我正在考虑为 Oracle 数据库构建一个 MS Access 前端。

我不是开发人员(我是 public 工作人员),但我确实了解 MS Access 和 Oracle。用户数量为 5,可能会增加到 10-20。前端主要是报告,数据输入的形式很奇怪。安全不是首要问题;由数据库处理,信息不敏感。

我知道 MS Access 项目通常最终会成为灾难性的怪物。据我所知,MS Access 并不是一个企业系统。

但我正在考虑,因为,好吧,我别无选择。我不在 I.T.,还有我的 I.T。部门根本没有提供帮助的资源。在我的组织中,一个合适的、企业的、开箱即用的系统还需要 5-10 年的时间。我不能等那么久。相反,我有 MS Access 可以使用。

我希望,如果我坚持一些关键原则,前端将不会成为一个脆弱的、灾难性的怪物,而是成为一个可持续的、强大的系统。

我希望:


综上所述,即使我设法做到了这些事情,我猜测在 MS Access 中制作企业系统仍然存在相关问题。

与企业 MS Access 前端相关的风险和固有问题是什么?

首先要给自己点赞!你听起来绝对不缺乏经验;恰恰相反。您构建和维护系统的方法听起来一流。关于您的限制,听起来您需要一个报告工具,而且 Access 似乎是您唯一的选择。我知道这里有一条建议使用 Oracle Apex 的评论,但我认为这不适合您。使用 Oracle 本地访问方法的产品肯定会比 Access 执行得更好,但这并不意味着您已经走到了死胡同。 Access 是一个强大的工具,如果您了解它的局限性(并且我指的不仅仅是 2GB 的文件大小限制;我怀疑您会 运行 接受它)。以下是我可以提供的一些建议,希望这听起来不陌生:

  1. 如果您有能力将 SQL 编写为 Oracle 中的存储过程或视图,那就去做吧。
  2. 不要 link 到 Oracle 中的表,那会非常慢。
  3. 不要使用 ADO 将数据从 Oracle 传输到 Access,那样也会很慢,因为它需要逐行处理。
  4. 使用 SQL 传递查询连接到 Oracle 并执行存储的 procedures/views/SQL。这将是您最快的选择,因为 Access 只会将您的查询发送到服务器执行;它本身不会对运行它做任何事情(或估计如何运行它)。
  5. 尝试在 Oracle 中执行所有逻辑。意思是,如果您没有编写存储过程的能力,并且说您需要创建临时表,那么请在 oracle 会话中或在您通过 [=35= 执行的 SQL 脚本中执行此操作] 透传查询
  6. 如果您需要将数据传输到 Access,请尝试对其进行限制。您可能不会创建 200 页的报告,所以不要 return 您不需要访问的数据;充分利用服务器的处理能力。
  7. 假设您已完成所有这些工作,现在可以分发 Access 文件了。不要将数据库放在网络驱动器上并与用户共享。给每个用户自己的副本。现在,这个话题本身会是一个很长的讨论,因为版本控制之类的东西开始发挥作用,但我不会在这里深入讨论。如果用户在每次需要使用时总是可以访问网站并下载干净的 Access 文件,那么就这样做。如果没有,他们将始终启动其本地副本,您需要在 Access 中对任何本地数据实施一些清理例程,然后启用关闭时压缩设置,以消除可能影响性能的混乱情况。
  8. 如果您对 Oracle 的查询执行不佳,并且您的报告最终变得缓慢,请不要害怕寻求帮助。 DBA 不会喜欢您所做的任何会影响他们数据库性能的事情,因此请利用他们来帮助调整您的 SQL.