Ms access 为多用户访问设置MS Access DB

Ms access 为多用户访问设置MS Access DB,ms-access,database-design,multi-user,Ms Access,Database Design,Multi User,我们正在考虑“增长”一点MS Access数据库,为多个用户提供一些表、表单和查询。(使用不同的后端是另一种,但更长期的选择,不幸的是,目前不可接受。) 大多数用户都是只读的,但也有少数(目前只有一两个)用户必须能够进行更改(而只读用户也在使用数据库)。我们不太关心安全方面,而是更关心以下一些问题: 我们如何确保写入用户可以在其他用户使用数据时更改表数据?读取用户是否在表上设置锁?写入用户是否必须在表上设置锁?Access是为我们做的还是我们必须显式地编写代码 “MS Access事务”是否存

我们正在考虑“增长”一点MS Access数据库,为多个用户提供一些表、表单和查询。(使用不同的后端是另一种,但更长期的选择,不幸的是,目前不可接受。)
大多数用户都是只读的,但也有少数(目前只有一两个)用户必须能够进行更改(而只读用户也在使用数据库)。我们不太关心安全方面,而是更关心以下一些问题:


  • 我们如何确保写入用户可以在其他用户使用数据时更改表数据?读取用户是否在表上设置锁?写入用户是否必须在表上设置锁?Access是为我们做的还是我们必须显式地编写代码
  • “MS Access事务”是否存在我们应该注意的常见问题
  • 我们可以在使用表单、查询等时处理它们吗?我们如何在不妨碍用户的情况下“编程”
  • MS Access中的哪些设置会影响处理方式
  • 我们的背景大多在Oracle,在处理多个用户时,访问权限会有所不同吗?Access中是否有“隔离级别”之类的东西
非常感谢您提供任何有用文章的提示或指南。

要做的第一件事(如果尚未完成)是将数据库拆分为前端(包含所有表单/报表等)和后端(包含所有数据)。第二件事是在前端设置版本控制

在我的许多数据库中,我这样做的方式是让用户运行一个小的“跳线”数据库来打开主数据库。该跳线执行以下操作

•检查用户的C驱动器上是否有数据库

•如果未安装,则安装并运行

•如果有,则检查其版本

•如果版本号不匹配,则复制最新版本

•打开数据库

整个检查过程通常不到半秒钟。使用此模型,您可以在单独的数据库上进行所有开发,然后当您准备“发布”时,只需将新的mde放到网络共享上,下次用户打开跳线时,最新版本将被复制下来


在多用户数据库中还有其他需要考虑的问题,可能值得检查常见错误,例如将表单绑定到整个表等。在数据写入期间,Access中可以使用表或记录锁定。您可以通过工具|选项|高级选项卡控制默认记录锁定:

  • 没有锁
  • 所有记录
  • 编辑记录
  • 您可以根据特定需要在窗体的记录锁或DAO/ADO代码中设置此项

    如果您正确地使用事务,那么事务不应该成为问题

    最佳实践:将表与所有其他代码分开。为每个用户提供自己的代码文件副本,然后在网络服务器上共享数据文件。处理代码的“测试”副本(以及到测试数据文件的链接),然后分别更新用户的单个代码文件。如果需要更改数据文件(添加表、列等),则必须让所有用户退出应用程序才能进行更改


    查看Oracle比较的其他答案。

    Access是一个非常好的多用户数据库。它有许多内置功能来处理多用户情况。事实上,它非常流行,因为它是一个非常好的多用户数据库。对于有多少用户可以同时使用数据库进行更新和编辑(取决于开发人员对访问的了解程度以及数据库的设计方式),有一个上限,从20个用户到大约50个用户不等。一些access数据库可以处理多达50个并发用户,而许多其他数据库可以处理20或25个并发用户更新数据库。对于已经使用了几年或更长时间的数据库,这些数据已经被观察到,并且在access新闻组中已经讨论过多次。

    我认为access是您的最佳选择。但您必须拆分数据库,请参见:


    •我们如何确保写入用户可以在其他用户使用数据时更改表数据?读取用户是否在表上设置锁?写入用户是否必须在表上设置锁?Access是为我们做的还是我们必须显式地编写代码

    除非明确地放置读锁,否则不存在读锁。只需使用“无锁”

    •我们是否应该注意“MS Access事务”中的任何常见问题

    1-2个写入用户不应出现问题

    •我们能否在使用表单、查询等时处理它们?我们如何在不妨碍用户的情况下“编程”

    若你们拆分数据库,那个么在FE设计上就并没有问题了

    •MS Access中的哪些设置对处理方式有影响

    你什么意思

    •我们的背景大多在Oracle,在处理多个用户时,访问权限会有所不同吗?Access中是否有“隔离级别”之类的东西

    访问中没有隔离级别。
    顺便说一句,如果你有很多用户和大型数据库,那么你可以稍后将数据移动到oracle并保持access前端。

    我发现这个问题的答案有问题、令人困惑且不完整,所以我会努力做得更好


    Q1:我们如何确保写入用户可以在其他用户使用数据时更改表数据?读取用户是否在表上设置锁?写入用户是否必须在表上设置锁?Access是为我们做的还是我们必须显式地编写代码? 没有人真正完整地回答过这个问题。访问选项中有关设置锁定的信息与读写锁定无关。无锁vs.所有记录vs.已编辑记录是您的选择