我现在有一个项目,我希望能够从第 3 方产品用于存储其信息的 Access 数据库中提取行。可能会有少量用户在我的“导出”过程中同时访问这个数据库,所以我有点担心数据完整性和并发访问。
当我的 .NET 导入过程(使用 LINQ/ADO.NET/?)尝试在其他人保存行的同时尝试从 MDB 中提取数据时,我可能会遇到问题吗?Access 的锁定如何工作?
我现在有一个项目,我希望能够从第 3 方产品用于存储其信息的 Access 数据库中提取行。可能会有少量用户在我的“导出”过程中同时访问这个数据库,所以我有点担心数据完整性和并发访问。
当我的 .NET 导入过程(使用 LINQ/ADO.NET/?)尝试在其他人保存行的同时尝试从 MDB 中提取数据时,我可能会遇到问题吗?Access 的锁定如何工作?
应该没有问题。问题只能发生在并发写入操作上。MS Access 的锁定基于 ldb 文件中的文件锁定。锁定仅发生在页面上,而不发生在完整的文件上。因为锁在 ldb 文件而不是 mdb 文件中,所以并行读取没有问题。
在之前使用 Access 的工作中(当我使用 2003 时),我遇到的唯一问题是偶尔读取会锁定当前读取上方和下方的行。但是,我相信这可能是我们应用程序的一个孤立问题。
当您打开数据库时,不要尝试以只读模式打开(尽管您可能认为这是有道理的)。当您是第一个用户时,Access 以只读模式打开 mdb 文件并且不创建 ldb,从而强制所有后续用户也处于只读模式。