【问题标题】:Opening a MS Access database as read only without locking it以只读方式打开 MS Access 数据库而不锁定它
【发布时间】:2021-05-06 09:24:31
【问题描述】:

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

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

【问题讨论】:

  • 你所说的“另一个地方的变化”是什么意思——还有什么地方? db 打开时总是会创建一个 ldb,无论是否只读。这不是拆分数据库吗?
  • @June7 什么是拆分数据库?
  • 好吧,你应该谷歌这个话题。而且我刚刚了解到,以独占只读方式打开数据库不会创建锁定文件,但它也无助于您的情况。您指的是哪种变化——数据还是设计?
  • @June7 好的,完成。 Split an Access database我不知道 Access 有这个功能。我将在其他地方做的更改是数据。

标签: database file ms-access locking readonly


【解决方案1】:

是的,你不能那样做。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多