设置MS-Access DB以进行多用户访问

时间:2009-11-04 06:55:23

标签: ms-access database-design multi-user

我们正在考虑“增加”一个MS-Access数据库,其中包含一些用于多个用户的表,表单和查询。 (使用不同的后端是另一个,但更长期的选择,遗憾的是目前是不可接受的。)
大多数用户将是只读的,但会有一些(当前是一个或两个)用户必须能够进行更改(而只读用户也在使用数据库)。我们并不关心安全方面,而是关注以下一些问题:

  • 当其他用户使用数据时,我们如何确保写入用户可以更改表数据?读取用户是否将锁定放在表格上?写用户是否必须在表上放置锁? Access是否为我们执行此操作,还是必须显式编写此代码?
  • 我们应该注意“MS Access交易”是否存在任何常见问题?
  • 我们可以在使用表格,查询等工作吗?我们怎样才能“编程”而不妨碍用户?
  • MS Access中的哪些设置会对事情的处理方式产生影响?
  • 我们的背景主要是在Oracle中,Access在处理多个用户方面有何不同? Access中有“隔离级别”这样的东西吗?

非常感谢任何有用文章的提示或指示。

7 个答案:

答案 0 :(得分:51)

答案 1 :(得分:4)

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

我在很多数据库中这样做的方法是让用户运行一个小的“跳线”数据库来打开主数据库。这个跳线做了以下事情

•检查用户是否在其C盘上有数据库

•如果没有则安装并运行

•如果他们这样做,那么检查他们有哪个版本

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

•打开数据库

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

在多用户数据库中还有其他需要考虑的事情,可能值得检查常见错误,例如将表单绑定到整个表等等。

答案 2 :(得分:2)

数据写入期间Access中可以使用表或记录锁定。您可以通过工具|控制默认记录锁定选项|高级选项卡:

  1. No Locks
  2. 所有记录
  3. 编辑记录
  4. 您可以在表单的Record Locks或DAO / ADO代码中设置此项以满足特定需求。

    如果正确使用交易,交易不应该是一个问题。

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

    请参阅Oracle比较的其他答案。

答案 3 :(得分:2)

我认为Access是您案例的最佳选择。但是您必须拆分数据库,请参阅: http://accessblog.net/2005/07/how-to-split-database-into-be-and-fe.html

•当其他用户使用数据时,我们如何确保写入用户可以更改表数据?读取用户是否将锁定放在表格上?写用户是否必须在表上放置锁? Access是否为我们执行此操作,还是必须显式编写此代码?

除非您明确地将它们放在一起,否则没有读锁定。只需使用“No Locks”

•我们应该注意“MS Access交易”是否存在任何常见问题?

不应该是1-2写用户的问题

•我们可以在使用表格,查询等工作吗?我们怎样才能“编程”而不妨碍用户?

如果您拆分数据库 - 那么在FE设计上没有问题。

•MS Access中的哪些设置会对事情的处理方式产生影响?

你是什么意思?

•我们的背景主要是在Oracle中,Access在处理多个用户方面有何不同? Access中有“隔离级别”这样的东西吗?

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我发现Vista中引入了SMB2协议来锁定访问数据库。 它可以通过以下注册表禁用:

Windows注册表编辑器版本5.00

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\ LanmanServer \参数] “SMB2”= DWORD:00000000

答案 6 :(得分:0)

构建客户端/服务器的正确方法Microsoft Access应用程序(其中数据存储在RDBMS中)是使用链接表方法。这可确保在Microsoft Access客户端应用程序和RDBMS数据之间维护数据隔离和并发,而无需额外的和不必要的编程逻辑和代码,这使维护更加困难,并增加了开发时间。

请参阅:http://claysql.blogspot.com/2014/08/normal-0-false-false-false-en-us-x-none.html