如何允许1个用户更新数据库,同时允许其他人只读取Microsoft Access?

问题描述 投票:1回答:2

我计划将带有表单和数据库的microsoft访问应用程序放到共享驱动器上,供大约10个人使用。但是,存在并发问题。有没有办法设置它,以允许微软访问数据库在任何时候只允许1人更新,同时允许其他人阅读但不更新它?目前,访问数据库只能由一个人更新和读取,而其他人甚至无法打开文件。非常感谢您提供的任何帮助!

ms-access access-vba ms-access-2010
2个回答
4
投票

我想要做的是只允许1个人更新数据库,而其他人只读。

是的,它可以完成,您无需更改应用程序代码即可。可以通过调整共享文件夹和共享文件的权限来完成。

文件夹的权限

每当一个或多个用户需要对ACE / Jet数据库文件(.accdb或.mdb)进行读/写访问时,所有用户必须对文件所在的文件夹具有“创建文件/写入数据”权限。这是因为如果他们是第一个进入数据库的人,他们的Access数据库引擎副本需要能够创建锁文件(.laccdb或.ldb)。

请注意,即使只具有该文件的只读访问权限的用户仍需要对该文件夹具有“创建文件”权限。这很重要。

文件权限(.accdb或.mdb)

您可以在此区分可以更新数据库的用户和只具有只读访问权限的用户。只需使用该文件的Windows权限,即可根据需要为其提供读取+写入或只读权限。

常见错误#1:在文件夹上设置用户/组权限(读写或只读),让数据库文件(.accdb或.mdb)继承它们

在这种情况下,“读取+写入”用户可以创建锁定文件,但“只读”用户不能。

•场景A:如果“读取+写入”用户首先打开数据库,则会创建锁定文件,并且所有内容都按预期运行。其他“读取+写入”用户可以打开数据库并进行更新,而其他“只读”用户只能以只读方式打开数据库。

•场景B:如果“只读”用户首先打开数据库文件,那么他们的Access副本会按预期将文件打开为只读。但是,如果“读取+写入”用户(根据其文件权限)然后尝试打开数据库文件,则它们也将以只读方式打开它。每个人都可以进入,但没有人可以做出改变。

常见错误#2:禁止每个人在文件夹上“创建文件”

在这种情况下,没有人可以创建锁文件,因此每个人都以只读方式打开数据库,无论他们对数据库文件本身的权限如何。

补充说明:

上面的结果通过连接到Windows Server 2012上的共享.accdb后端的Access_2010和Access_2013客户端的混合来确认。在早期版本的Access中,如果没有人可以创建锁定文件,那么第一个人“在”中将打开数据库文件处于“独占模式”并获取其文件权限允许的任何访问权限,而所有后续用户将被拒绝访问,并显示一条错误消息,指出“该文件已被其他用户独占打开”。


-4
投票

不。你可以通过编程方式制作一些东西,但它肯定会相当脆弱,每个奇怪的日子都会锁定每个人。 Access是一个很好的前端,但对于多用户来说不是一个好的后端。使用另一个数据库作为后端。原则上,SQL Server Express是最简单的选择。当然,您必须将数据库拆分为前端和后端,目前尚不清楚您是否已经这样做了。如果你还没有,你可以试试它如何在Access中使用这两个部分,但我使用多用户网络访问后端的经验并不好。

© www.soinside.com 2019 - 2024. All rights reserved.