Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 以只读方式打开MS Access数据库而不锁定它_Database_File_Ms Access_Locking_Readonly - Fatal编程技术网

Database 以只读方式打开MS Access数据库而不锁定它

Database 以只读方式打开MS Access数据库而不锁定它,database,file,ms-access,locking,readonly,Database,File,Ms Access,Locking,Readonly,我在MS Access中打开了一个*.mdb文件,明确表示我希望在“打开文件”对话框中以只读方式打开它。现在,我尝试在另一个地方进行更改,但它们总是无法保存到数据库,因为MS Access已将其锁定,因为我验证了它在*.mdb文件附近创建了一个*.ldb文件 有没有办法让MS Access以只读方式打开文件而不锁定它?是的,你不能这样做 任何数据库都需要锁定,因为Access数据库只是一个文件,所以锁定需要写入 与SQL server不同,Access没有NOLOCK提示或readuncommi

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


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

是的,你不能这样做

任何数据库都需要锁定,因为Access数据库只是一个文件,所以锁定需要写入

与SQL server不同,Access没有
NOLOCK
提示或
readuncommitted
隔离来执行不符合ACID的脏读

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

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


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

你所说的“在另一个地方的更改”是什么意思?无论数据库是否只读,都会在数据库打开时创建ldb。这不是分割数据库?@June7什么是分割数据库?好吧,你应该用谷歌搜索这个主题。我刚刚了解到,以独占只读方式打开db不会创建锁定文件,但也无助于您的情况。你指的是什么样的变化——数据还是设计?@June7好的,完成了。我不知道Access具有此功能。我将在其他地方进行的更改是数据。