MS Access(JET)是否适合多用户访问?

Rom*_*ias 17 ms-access multi-user

我有一个产品设计为使用MS Access文件作为数据库的桌面产品.

现在,一些用户需要将它安装在几台PC上(假设为2或3)并共享数据库.

我想将MS Access文件放在共享文件夹中并从PC访问它,但是...... JET Engine是为多用户访问而设计的?

有什么提示或事情需要注意这样做吗?

编辑:该应用程序是.net一个,使用数据库作为存储(不使用数据库作为前端)

Dav*_*ton 26

在这个帖子的答案中有很多错误的信息,我不知道从哪里开始.我只是花了4分的声誉在答案中投下了误导和错误的信息.

  1. Jet数据库引擎(这是所有涉及的,因为OP通过编辑澄清)默认是多用户 - 它是从头开始构建的.

  2. 当网络不合标准时,共享Jet数据存储是非常可靠的.这意味着不是WAN而不是无线,因为带宽必须足以让Jet维护LDB文件(用于多用户锁定),这意味着您的本地PC的Jet数据库引擎实例每秒一次ping(带有默认设置),因为Jet无法从断开的连接中恢复(这在无线环境中很常见).

  3. Access下降的情况是共享前端Access应用程序MDB时(此海报不是这种情况).失败的原因是因为您正在共享无法可靠共享且无理由共享的内容.由于Access对象存储在MDB文件中的方式(整个Access项目存储在一个系统表中的一个记录中的单个BLOB字段中),如果多个用户打开它,它很容易被破坏.在我的估计中,共享一个Access前端(或一个MDB中的表和表单/报告/等所有未分裂的MDB)是99.99%的Access/Jet文件损坏的来源.

我对OP问题的基本答案是,是的,Jet对于那么大的app来说是一个很棒的数据存储.但是,如果用户群体有可能增长到25以上,那么从头开始使用在更高用户群体中更强大的数据库引擎可能会更好.

  • 在很多成功的商业应用中,已经有很多次,很多次,我很难相信还有人认为这是不可能的.当然你可以设计得很糟糕,车轮也会掉下来.但这是你作为开发人员的工作.对用户的好处是,除了应用程序之外,他们最不需要专门为数据库提供DBA帮助. (6认同)
  • 在单个PC(不是SERVER)上,对于少于5个用户的组,Access将起作用.网络共享上的单个文件可以被任何进程锁定,而不仅仅是Access.如果MDB文件上发生备份操作,副本或任何其他文件操作,您将失去连接.问题是:您的解决方案需要多么可靠? (6认同)
  • Downvoters真的应该解释他们认为答案的错误. (2认同)
  • 今天另一个懦弱的贬低者没有能力解释这个答案有什么问题,值得进行投票. (2认同)

dst*_*ele 7

这样做是完全可行的; 但你必须将数据库拆分为前端(包括表单,查询,代码)和后端(仅限数据).每个用户必须将前端放在自己的计算机上,并链接到共享后端.

由于Jet会产生大量的网络流量,因此速度会很慢.微软也逐渐将Access作为开发工具弃用.例如,Access 2007的安全模型远不如Access 2003复杂.

作为很长一段时间的Access开发者,我逐渐远离Access.


Jef*_*itz 6

不要这样做...... Jet数据库声称能够支持多个用户,但使用升迁向导将Access文件转换为Sql Express数据库非常容易.该数据库文件可能很容易被用户或管理员锁定,并且您的所有用户都无法使用该数据库.

...而且Sql Express是免费的.从那里到Sql Server或其他商业数据库的完整实例的升级路径很简单.


Kei*_*ith 6

在可靠的本地网络上有2或3个用户,只要您经常备份网络驱动器,就应该没问题.

避免表中的任何位/ bool字段 - Jet有一些令人讨厌的腐败问题,可以多次访问它们.

还要记住,Access中的所有锁定都是乐观的:偶尔会有脏读.

MS Access适用于这样的小型办公场景:非关键的轻型办公室使用,您可以使用最少的编程设置.

期望数据文件不时被破坏 - 定期备份.

  • 我有几十个客户每天使用我的Access应用程序,并且在近5年内没有一次腐败.如果你做对了,你就没有腐败. (5认同)