我打算将带有表单和数据库的微软访问应用程序放到共享驱动器上,供大约10个人使用。但是,存在并发问题。有没有办法设置它,以允许微软访问数据库在任何时候只允许1人更新,同时允许其他人阅读但不更新它?目前,访问数据库只能由一个人更新和读取,而其他人甚至无法打开文件。非常感谢您提供的任何帮助!
答案 0 :(得分:4)
我想要做的是只允许1个人更新数据库,而其他人只能读取数据库。
是的,可以完成,您无需更改应用程序代码即可。可以通过调整共享文件夹和共享文件的权限来完成。
文件夹权限
每当一个或多个用户需要对ACE / Jet数据库文件(.accdb或.mdb)进行读/写访问时,所有用户必须具有创建文件/写入数据文件所在的文件夹的权限。这是因为如果他们是第一个进入数据库的人,他们的Access数据库引擎副本需要能够创建锁文件(.laccdb或.ldb)。
请注意,即使只拥有文件的只读权限的用户仍需要文件夹上的“创建文件”权限。这很重要。
文件权限(.accdb或.mdb)
这是区分可以更新数据库的用户和只具有只读访问权限的用户的地方。只需使用文件上的Windows权限,即可根据需要为其提供读取+写入或只读权限。
常见错误#1:在文件夹上设置用户/组权限(读写或只读),让数据库文件(.accdb或.mdb)继承它们
在这种情况下,“读取+写入”用户可以创建锁定文件,但“只读”用户不能。
•场景A: 如果“读取+写入”用户首先打开数据库,则会创建锁定文件,并且所有内容都按预期运行。额外的“读取+写入”用户可以打开数据库并进行更新,而其他“只读”用户只能以只读方式打开数据库。
•方案B: 如果“只读”用户首先打开数据库文件,那么他们的Access副本会按预期将文件打开为只读文件。但是,如果“读取+写入”用户(根据其文件权限)然后尝试打开数据库文件,则它们也将以只读方式打开它。每个人都可以进入,但没有人可以做出改变。
常见错误#2:禁止在每个人的文件夹中“创建文件”
在这种情况下,没有人可以创建锁文件,因此每个人都以只读方式打开数据库,无论他们对数据库文件本身的权限如何。
附加说明:
上面的结果通过混合使用Access_2010和Access_2013客户端连接到Windows Server 2012上的共享.accdb后端来确认。在早期版本的Access中,如果没有人可以创建锁定文件,那么第一个人“在”将以“独占模式”打开数据库文件并获取其文件权限允许的任何访问权限,而所有后续用户将被拒绝访问,并显示错误消息,指出“该文件已由其他用户独占打开。”
答案 1 :(得分:-4)
没有。你可以通过编程方式制作一些东西,但它肯定是相当脆弱的,每个奇怪的日子锁定每个人。 Access是一个很好的前端,但对于多用户来说不是一个好的后端。使用另一个数据库作为后端。原则上,SQL Server Express是最简单的选择。当然,您必须将数据库拆分为前端和后端,目前尚不清楚您是否已经这样做了。如果还没有,你可以试试它在Access中如何与两个部分一起工作,但我对多用户网络访问后端的经验并不好。