Tek*_*ito 2 c# ms-access locking multi-tenant
我们的网络上有一个MS Access数据库(accdb),多个用户将通过.NET应用程序进行编辑和读取.我知道像SQL Server这样的服务器数据库将是这种情况的最佳选择,但目前这不在我手中.
.Net应用程序将使用ADO.Net(即OleDBConnections)和Microsoft.Office.Interop.Access.Dao命名空间内的工具连接到数据库.
我已经阅读了一些关于连接到Access的多个用户的文章和帖子,并且在这方面似乎存在一些关于Access功能的混淆和不同意见.我如何/可以在我的应用程序中实现以下功能:
谢谢.
要以独占模式打开ACCDB,您需要将此键/值添加到连接字符串中
Mode=Share Exclusive;
Run Code Online (Sandbox Code Playgroud)
这将阻止其他用户连接到同一数据库,直到您关闭并以这种方式处置打开数据库的连接.
如果我记得很清楚,JET连接字符串中Mode关键字的可能值(非常自我解释)是
Mode='Read';
Mode='Write';
Mode='ReadWrite';
Mode='Share Deny None';
Mode='Share Deny Read';
Mode='Share Deny Write';
Mode='Share Exclusive';
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面标志的各种组合,但我找不到一个简单的解决方案,允许在ReadWrite中打开单个连接,而以下连接自动回退到只读.可能在您的场景中,最佳路径是拥有本地连接(而不是全局连接),Share Exclusive如果您需要写入数据库并尝试在无法打开数据库的情况下捕获异常,请尝试打开它,从而为用户提供"重试"选项.我知道这不是一条简单的道路.让我们看看对MS-Access有更好了解的用户是否可以提供更精细的解决方案.
我同意上面的评论(和你自己的评估),这不是在并发情况下使用的最好的数据库工具,但现在事情要好得多.
我发现这个答案写得很好,很全面,并且对于并发问题的Access的优缺点有一个平衡的观点.
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |