database - 以只读方式打开 MS Access 数据库而不锁定它
问题描述
我在 MS Access 中打开了一个 *.mdb 文件,明确说明我想在打开文件对话框中以只读方式打开它。现在,我尝试在另一个地方进行更改,但它们总是无法保存到数据库,因为 MS Access 已将其锁定,因为我验证它在 *.mdb 文件附近创建了一个 *.ldb 文件。
有没有办法 MS Access 可以只读方式打开文件而不锁定它?
解决方案
是的,你不能那样做。
任何符合 ACID的数据库都需要锁定,并且由于 Access 数据库只是一个文件,因此锁定需要写入。
与 SQL Server 相比,Access 没有NOLOCK
提示或READ UNCOMMITED
隔离来执行不符合 ACID 的脏读。
即使您将文件标记为只读并且不支持读取,仍会创建 LDB 文件。
当然,您可以在文件系统级别解决此问题,例如通过在访问时复制文件并使用该副本。一些网络文件系统允许写时复制,允许多个用户访问同一个文件,但只提交一个版本。
当然,如果文件是只读但可锁定的,则另一种方法是以只读独占模式打开文件。这不会生成 LDB,也不会导致冲突或读取损坏,因为所有用户的所有写入都被拒绝。但它不允许其他用户执行任何操作。
推荐阅读
- java - Camel RabbitMQ 到 REST 端点 SpringBootTest 失败
- google-chrome-extension - 如何在 chrome 扩展中获取 iframe 的索引
- sql-server - 使用 XmlWriter 从 LINQ 创建大型文档到 SQL / LINQPad 抛出内存不足异常
- django - 在views.py的createview中保存外键实例
- javascript - 未捕获的 ReferenceError:regeneratorRuntime 未定义导入 VFacebookLogin
- postgresql - PostgreSQL 错误:列“收入”指定了多次
- c++ - 为什么 SSL_CONNECT 在 Linux 上阻塞?
- python - 代码不能从第二个 if 语句开始工作?
- java - JFreeChart - RangeAxis 自动量程并且不从 0 开始
- r - for循环中的变量没有在R中分配