首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多用户MS Access数据库-如何完全锁定

问多用户MS Access数据库-如何完全锁定
EN

Stack Overflow用户
提问于 2014-12-05 21:50:05
回答 1查看 2.9K关注 0票数 2

我们的网络上有一个MS Access数据库(accdb),多个用户将通过一个.NET应用程序进行编辑和读取。我知道像server这样的服务器数据库将是这种情况下的最佳选择,但目前这是我无法控制的。

.Net应用程序将使用ADO.Net (即OleDBConnections)和Microsoft.Office.Interop.Access.Dao命名空间中的工具连接到数据库。

我读过几篇关于多个用户连接到访问的文章和文章,在这方面,对于Access的功能似乎有些混淆和不同的看法。如何在我的应用程序中实现以下目标:

  1. 建立写入数据库的连接,这将锁定整个数据库(所有记录和表),直到连接结束为止。如果其他试图同时写入的用户因异常而停止,这是可以的。
  2. 建立与任何其他用户操作没有冲突的指定为只读的连接.

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 22:03:02

若要以独占模式打开ACCDB,需要将此键/值添加到连接字符串中。

代码语言:javascript
复制
Mode=Share Exclusive;

这将阻止其他用户连接到同一个数据库,直到以这种方式关闭并释放打开数据库的连接为止。

如果我记得清楚,则JET连接字符串中Mode关键字的可能值(相当不言自明)如下

代码语言:javascript
复制
Mode='Read'; 
Mode='Write'; 
Mode='ReadWrite'; 
Mode='Share Deny None'; 
Mode='Share Deny Read'; 
Mode='Share Deny Write'; 
Mode='Share Exclusive'; 

我尝试了上述标志的各种组合,但我找不到一个简单的解决方案,它允许在ReadWrite中打开单个连接,而下面的连接则返回到只自动读取。在您的场景中,最好的路径是有一个本地连接(而不是全局连接),如果需要写入数据库,尝试在Share Exclusive中打开它,如果不能打开数据库,则捕获异常,给用户一个重试选项。我知道这不是一条容易的路。让我们看看一个拥有更多more知识的用户是否能给出一个更精细的解决方案。

我同意上面的评论(以及您自己的评估),这不是在并发情况下使用的最好的数据库工具,但是现在的情况要好得多。

我发现this answer写得很好,比较全面,并且对并发问题的访问能力和弱点有着平衡的看法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27325219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档