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 可以使用。
我希望,如果我坚持一些关键原则,前端将不会成为一个脆弱的、灾难性的怪物,而是成为一个可持续的、强大的系统。
我希望:
- 尽可能简单。如果功能不是绝对必要的,则不要实现它。迫使利益相关者证明他们的要求是合理的。
- 仅将其视为原型,而不是正式的企业系统。让所有利益相关者郑重宣誓最终将其迁移到合适的企业系统。
- 配置,不要自定义。仅将自定义 (VBA) 作为绝对的最后手段。即便如此,在诉诸定制之前,请考虑不要做任何事情。我这么说,因为我是办公室里唯一一个会写脚本的人,我什至都不擅长。
- 保持正常'fire drills'。如果它坏了,而我又不在身边帮忙,会发生什么?定期举办 training/knowledge 分享会,向同事传授该系统。
- 像照料花园一样照料系统。掌握一切。通过使其更简单、更高效并删除不必要的功能来不断改进它。
综上所述,即使我设法做到了这些事情,我猜测在 MS Access 中制作企业系统仍然存在相关问题。
与企业 MS Access 前端相关的风险和固有问题是什么?
首先要给自己点赞!你听起来绝对不缺乏经验;恰恰相反。您构建和维护系统的方法听起来一流。关于您的限制,听起来您需要一个报告工具,而且 Access 似乎是您唯一的选择。我知道这里有一条建议使用 Oracle Apex 的评论,但我认为这不适合您。使用 Oracle 本地访问方法的产品肯定会比 Access 执行得更好,但这并不意味着您已经走到了死胡同。 Access 是一个强大的工具,如果您了解它的局限性(并且我指的不仅仅是 2GB 的文件大小限制;我怀疑您会 运行 接受它)。以下是我可以提供的一些建议,希望这听起来不陌生:
- 如果您有能力将 SQL 编写为 Oracle 中的存储过程或视图,那就去做吧。
- 不要 link 到 Oracle 中的表,那会非常慢。
- 不要使用 ADO 将数据从 Oracle 传输到 Access,那样也会很慢,因为它需要逐行处理。
- 使用 SQL 传递查询连接到 Oracle 并执行存储的 procedures/views/SQL。这将是您最快的选择,因为 Access 只会将您的查询发送到服务器执行;它本身不会对运行它做任何事情(或估计如何运行它)。
- 尝试在 Oracle 中执行所有逻辑。意思是,如果您没有编写存储过程的能力,并且说您需要创建临时表,那么请在 oracle 会话中或在您通过 [=35= 执行的 SQL 脚本中执行此操作] 透传查询
- 如果您需要将数据传输到 Access,请尝试对其进行限制。您可能不会创建 200 页的报告,所以不要 return 您不需要访问的数据;充分利用服务器的处理能力。
- 假设您已完成所有这些工作,现在可以分发 Access 文件了。不要将数据库放在网络驱动器上并与用户共享。给每个用户自己的副本。现在,这个话题本身会是一个很长的讨论,因为版本控制之类的东西开始发挥作用,但我不会在这里深入讨论。如果用户在每次需要使用时总是可以访问网站并下载干净的 Access 文件,那么就这样做。如果没有,他们将始终启动其本地副本,您需要在 Access 中对任何本地数据实施一些清理例程,然后启用关闭时压缩设置,以消除可能影响性能的混乱情况。
- 如果您对 Oracle 的查询执行不佳,并且您的报告最终变得缓慢,请不要害怕寻求帮助。 DBA 不会喜欢您所做的任何会影响他们数据库性能的事情,因此请利用他们来帮助调整您的 SQL.
我正在考虑为 Oracle 数据库构建一个 MS Access 前端。
我不是开发人员(我是 public 工作人员),但我确实了解 MS Access 和 Oracle。用户数量为 5,可能会增加到 10-20。前端主要是报告,数据输入的形式很奇怪。安全不是首要问题;由数据库处理,信息不敏感。
我知道 MS Access 项目通常最终会成为灾难性的怪物。据我所知,MS Access 并不是一个企业系统。
但我正在考虑,因为,好吧,我别无选择。我不在 I.T.,还有我的 I.T。部门根本没有提供帮助的资源。在我的组织中,一个合适的、企业的、开箱即用的系统还需要 5-10 年的时间。我不能等那么久。相反,我有 MS Access 可以使用。
我希望,如果我坚持一些关键原则,前端将不会成为一个脆弱的、灾难性的怪物,而是成为一个可持续的、强大的系统。
我希望:
- 尽可能简单。如果功能不是绝对必要的,则不要实现它。迫使利益相关者证明他们的要求是合理的。
- 仅将其视为原型,而不是正式的企业系统。让所有利益相关者郑重宣誓最终将其迁移到合适的企业系统。
- 配置,不要自定义。仅将自定义 (VBA) 作为绝对的最后手段。即便如此,在诉诸定制之前,请考虑不要做任何事情。我这么说,因为我是办公室里唯一一个会写脚本的人,我什至都不擅长。
- 保持正常'fire drills'。如果它坏了,而我又不在身边帮忙,会发生什么?定期举办 training/knowledge 分享会,向同事传授该系统。
- 像照料花园一样照料系统。掌握一切。通过使其更简单、更高效并删除不必要的功能来不断改进它。
综上所述,即使我设法做到了这些事情,我猜测在 MS Access 中制作企业系统仍然存在相关问题。
与企业 MS Access 前端相关的风险和固有问题是什么?
首先要给自己点赞!你听起来绝对不缺乏经验;恰恰相反。您构建和维护系统的方法听起来一流。关于您的限制,听起来您需要一个报告工具,而且 Access 似乎是您唯一的选择。我知道这里有一条建议使用 Oracle Apex 的评论,但我认为这不适合您。使用 Oracle 本地访问方法的产品肯定会比 Access 执行得更好,但这并不意味着您已经走到了死胡同。 Access 是一个强大的工具,如果您了解它的局限性(并且我指的不仅仅是 2GB 的文件大小限制;我怀疑您会 运行 接受它)。以下是我可以提供的一些建议,希望这听起来不陌生:
- 如果您有能力将 SQL 编写为 Oracle 中的存储过程或视图,那就去做吧。
- 不要 link 到 Oracle 中的表,那会非常慢。
- 不要使用 ADO 将数据从 Oracle 传输到 Access,那样也会很慢,因为它需要逐行处理。
- 使用 SQL 传递查询连接到 Oracle 并执行存储的 procedures/views/SQL。这将是您最快的选择,因为 Access 只会将您的查询发送到服务器执行;它本身不会对运行它做任何事情(或估计如何运行它)。
- 尝试在 Oracle 中执行所有逻辑。意思是,如果您没有编写存储过程的能力,并且说您需要创建临时表,那么请在 oracle 会话中或在您通过 [=35= 执行的 SQL 脚本中执行此操作] 透传查询
- 如果您需要将数据传输到 Access,请尝试对其进行限制。您可能不会创建 200 页的报告,所以不要 return 您不需要访问的数据;充分利用服务器的处理能力。
- 假设您已完成所有这些工作,现在可以分发 Access 文件了。不要将数据库放在网络驱动器上并与用户共享。给每个用户自己的副本。现在,这个话题本身会是一个很长的讨论,因为版本控制之类的东西开始发挥作用,但我不会在这里深入讨论。如果用户在每次需要使用时总是可以访问网站并下载干净的 Access 文件,那么就这样做。如果没有,他们将始终启动其本地副本,您需要在 Access 中对任何本地数据实施一些清理例程,然后启用关闭时压缩设置,以消除可能影响性能的混乱情况。
- 如果您对 Oracle 的查询执行不佳,并且您的报告最终变得缓慢,请不要害怕寻求帮助。 DBA 不会喜欢您所做的任何会影响他们数据库性能的事情,因此请利用他们来帮助调整您的 SQL.