首页 > 解决方案 > 以只读方式打开 MS Access 数据库而不锁定它

问题描述

我在 MS Access 中打开了一个 *.mdb 文件,明确说明我想在打开文件对话框中以只读方式打开它。现在,我尝试在另一个地方进行更改,但它们总是无法保存到数据库,因为 MS Access 已将其锁定,因为我验证它在 *.mdb 文件附近创建了一个 *.ldb 文件。

有没有办法 MS Access 可以只读方式打开文件而不锁定它?

标签: databasefilems-accesslockingreadonly

解决方案


是的,你不能那样做。

任何符合 ACID的数据库都需要锁定,并且由于 Access 数据库只是一个文件,因此锁定需要写入。

与 SQL Server 相比,Access 没有NOLOCK提示或READ UNCOMMITED隔离来执行不符合 ACID 的脏读。

即使您将文件标记为只读并且不支持读取,仍会创建 LDB 文件。

当然,您可以在文件系统级别解决此问题,例如通过在访问时复制文件并使用该副本。一些网络文件系统允许写时复制,允许多个用户访问同一个文件,但只提交一个版本。

当然,如果文件是只读但可锁定的,则另一种方法是以只读独占模式打开文件。这不会生成 LDB,也不会导致冲突或读取损坏,因为所有用户的所有写入都被拒绝。但它不允许其他用户执行任何操作。


推荐阅读