Access Development的最佳实践as specified by Microsoft之一是将Access应用程序拆分为两部分;前端,包含除表格之外的所有对象以及包含表格的后端。
msdn页面将文章链接到文章Splitting Microsoft Access Databases to Improve Performance and Simplify Maintainability,详细描述了该过程。
建议在多用户环境中,将后端存储在服务器/共享文件夹中,同时将前端分发给每个用户。
这意味着每次对前端进行任何更改时,都需要将其部署到每台用户计算机上。
我的问题是:
假设用户自己没有权利修改应用程序的前端部分,那么将其留在服务器以及后端副本旁边的缺点/危险是什么?
我可以在这里看到性能问题,但是这里有任何危险,比如可能的损坏等吗?
谢谢
修改
为了澄清,有问题的方案假定一个前端存储在服务器上并由用户共享。
据我所知,建议将FE部署到每台用户计算机,但我的问题更多的是如果没有这样做会有什么危险。
E.g。当您获得使用服务器上FE和BE方法的现有解决方案时。假设性能是可以接受的并且客户不愿意改变方法,那么你仍然会推动改变吗?为什么呢?例如,可能存在数据损坏的危险肯定是足够强大的论据,但情况就是这样吗?
答案 0 :(得分:5)
在服务器上保留FE的各个用户特定副本的唯一缺点是网络性能。就数据损坏而言,它不会产生任何影响。
但是您不应该在多个用户之间共享FE。这容易导致FE和其他怪异的破坏。每个用户都应该获得自己的FE副本。在用户使用新副本时,您也无法将其替换为新副本。
客户端在文件服务器上的各个用户文件夹上运行FE多年,但在Citrix群集中运行msaccess.exe。 IT人员不希望更新Citrix集群服务器系统的本地硬盘驱动器。
就部署FE而言,请参阅我网站上的Auto FE Updater。下周将发生巨大变化,使初始服务器安装和用户初始安装更容易,更容易实现。
答案 1 :(得分:2)
将前端保留在服务器上会或多或少地破坏分割数据库的目的。将前端放在桌面上会减少网络流量,因为每次使用都不会检索应用程序,并允许前端数据库包含具有每个用户专用的数据的表,用于存储设置或临时数据。
如果您希望避免数据损坏,请务必让每个用户拥有自己的前端副本。 Allen Browne在this article
有许多实用程序可以根据需要更新桌面上的前端版本,或者您甚至可以自己编写这样的实用程序。
答案 2 :(得分:0)
我同意其他人的意见。建议不要将fe保留在服务器上。只需在您的服务器上放置一个批处理文件即可。当您有更新时,通过电子邮件发送批处理文件的快捷方式。这是许多解决方案之一。一旦你设置它就不是问题。
赛斯
答案 3 :(得分:0)
作为使用链接到后端(BE)数据库(a.k.a.分割数据库)的前端(FE)的Access 2007程序员,我已经完成了上述两项工作。向用户发送更新的FE会产生其他开销,尤其是在使用第三方控件或应用程序的情况下。
至于Citrix,在Access 97天后,Citrix管理员能够允许我将FE的一个副本放在服务器文件位置。它将为每个登录用户创建一个新实例。我们能够使用超过50个用户而不会产生任何影响。我必须通过说Access VBA代码使用有效的更新和回滚事务而不仅仅是简单的Select语句来限定这一点。
我今天的问题是在Citrix服务器上运行的Access 2007(Windows 2003)。 当我是唯一登录Citrix的人时,该应用程序(我选择了一个大型的复杂报告,通过自动化测试创建自定义Excel电子表格),其运行速度仅比从我的XP工作站运行FE快1%,并链接到Citrix服务器硬盘驱动器上的BE。
但是,当两三个人登录Citrix服务器时,同一报告需要三倍的时间。但是,当有两三个人登录Citrix时,我可以从我的XP工作站运行我的FE,它的运行方式与Citrix上的单用户一样。
由于同样的原因,不建议在两个或三个用户共享的共享网络驱动器上发布FE。访问FE不是为了共享而设计的(*我将节省详细信息*)。这就是人们在每个工作站上放置FE并共享一个数据库(BE)的原因。
我发现Citrix缺少的是一些很好的逐步“如何”在Citrix上运行Access FE。理想情况下,可以发布单个文件。当用户登录Citrix时,Citrix应制作FE的副本,并为该用户的登录名分配资源(对于Access)。 我认为这正是MS Office自动执行的操作,或者至少有关于如何执行此操作的说明。
如果存在此类文件,请发布。像我这样的程序员喜欢将它交给Citrix管理员。它可以解决很多问题。