连接 MS Access 而另一个应用程序使用相同的 MS Access 文件

Posted

技术标签:

【中文标题】连接 MS Access 而另一个应用程序使用相同的 MS Access 文件【英文标题】:Connecting MS Access while another application using the same MS Acess File 【发布时间】:2012-02-03 07:47:56 【问题描述】:

我有一个窗口应用程序,它试图连接一个 MS Access 文件,该文件已准备好被另一个应用程序使用。 当我停止该应用程序时,我可以连接 MS Access 文件。 否则会报错如下:

链接服务器“AccessDb”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”返回消息“无法启动您的应用程序。工作组信息文件丢失或由其他用户以独占方式打开。

有什么方法可以在只读模式下打开连接。 我必须从该文件中读取数据。

谢谢。

【问题讨论】:

我曾经遇到过这个问题,发现没有办法解决。问题可能是打开的应用程序以独占方式访问 Access 文件。你可以参考这个链接:social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/… 【参考方案1】:

尝试将“Mode= Share Deny None”添加到锁定数据库的应用程序的连接字符串中,使连接字符串看起来像

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyDb.mdb;Persist Security Info=False;Jet OLEDB:Database Password=My_Password;Mode= Share Deny None

当前以独占模式打开数据库的应用程序应使用此连接字符串。

【讨论】:

另一个异常说:Microsoft Office Access 数据库引擎无法打开或写入文件“\\172.16.24.37\ACServer\ACCESS.mdb”。它已被其他用户独占打开,或者您需要权限才能查看和写入其数据。我的连接字符串是 你的连接字符串没问题,问题是文件已经被另一个应用程序以独占模式打开:是这个另一个应用程序导致了这个问题,还是这个另一个应用程序需要修复。如果这个其他应用程序以独占模式打开数据库,您将无法打开数据库,并且您对此无能为力。有人需要更改其他应用程序,使其以共享模式而不是独占模式打开数据库。 不需要Mode= Share Deny None 部分。 Jet OLEDB:Database Password=My_Password 就够了【参考方案2】:

我遇到了类似的问题,现在已经解决了。 在连接字符串中你可能已经提供 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\serverName\shareName\folder\myDatabase.mdb;User Id=admin;Password=;

不要提供密码,而是在共享文件时单击高级共享并删除管理员用户并添加具有完全控制权的所有人。 然后运行你的应用程序

【讨论】:

以上是关于连接 MS Access 而另一个应用程序使用相同的 MS Access 文件的主要内容,如果未能解决你的问题,请参考以下文章

偶尔在 MS Access 中工作的简单 SQL 更新语句?

何时打开和关闭MS Access SQL中的连接括号

MS Access 内连接不精确匹配(通配符或类似)

MS Access 并发用户

无法使用 OLEDB 连接 MS Access(.mdb 文件)

使用 VBA 断开用户与第三方应用程序使用 MS Access 的连接