【问题标题】:The microsoft jet database cannot open the file '...' It is already opened exclusively by another user or you need permission to view its datamicrosoft jet 数据库无法打开文件 '...' 它已被其他用户以独占方式打开,或者您需要权限才能查看其数据
【发布时间】:2011-11-08 16:16:39
【问题描述】:

我有一个我已经接管支持的 WinForms 应用程序,它是使用带有 VB.Net 的 Visual Studio 2005 构建的。该应用程序使用 Access 数据库。当它作为独立应用程序安装时运行良好,但应用程序的安装 cd 也允许网络安装,这是我目前遇到问题的地方。

为了测试网络安装,我在服务器 (Windows Server 2003 SP2) 上创建了一个文件夹,并将 Access 数据库复制到此文件夹。我为此文件夹创建了一个共享,并为每个人提供了共享的完全权限。然后在工作站上我安装了应用程序并给出了数据库的路径如下:

\\myserver\myshare\mydb.mdb

(此处的安装步骤按照安装光盘上的说明进行)

我安装它的工作站是 Windows 7 Ultimate。当我运行应用程序时,当应用程序尝试读取数据库文件时,我会收到标题中给出的错误消息。我已经确认我可以写入服务器上的共享文件夹,所以我认为这不是权限问题。另外,数据库文件根本没有被使用,所以肯定不是独占打开的。任何人都知道可能是什么原因造成的,以及我可以尝试做些什么来使其正常工作?

更新:

我已经在一台全新安装了 Windows XP SP3 的计算机上测试了工作站安装,它能够毫无问题地访问数据库文件。因此,我得到的这个错误似乎是 Windows 7 特有的。Windows 7 上的 Oledb 驱动程序是否存在已知问题?我的 Windows 7 版本,顺便说一句是 32 位。

【问题讨论】:

  • 您提到您正在授予对共享的访问权限。您是否也授予该文件夹的权限?您将需要在 DB 所在目录中创建文件的权限,以便它可以写入其锁定文件。
  • 感谢您的评论,JohnJx。我只授予了共享(组 EVERYONE)的权限,这还不够吗?服务器上的哪个用户必须获得授予权限?
  • “\myserver\myshare\mydb.mdb”中真的只有一个反斜杠而不是两个前导反斜杠吗?这可能就是问题所在。
  • 不,实际上有两个前导反斜杠;当我写问题时,我也输入了 2,但 stackoverflow 只显示 1。我认为 stackoverflow 将一个反斜杠视为转义字符。我会在我的问题中更正它,但我肯定会在应用程序中正确输入它。
  • 共享权限不够。您需要共享和文件夹的权限。

标签: .net windows vb.net winforms ms-access


【解决方案1】:

可能有很多事情,所以很难给出准确的答案。 但是,我有一段时间遇到了类似的问题,我写了一篇我不想在这里复制的帖子:

http://walkinghumble.wordpress.com/2009/02/20/cannot-connect-to-an-access-mdb-file-located-on-the-network-through-oledb/

如果根本问题相同(即使在我的情况下它是一个 ASP.NET 应用程序),也许它会有所帮助。如果不是,它至少会提升进程监视器,如果你还不知道的话。

【讨论】:

    【解决方案2】:

    如果项目的参考设置中没有“Microsoft ADO Ext 2.8 for DDL and Security”COM 参考集,Jet 4.0 将无法打开 Access 文件。要检查引用的状态,请转到:Project-->References-->COM。

    完成这项工作的其他重要参考是:

    “Microsoft ADO 数据控件 6.0 (OLEDB)”COM 参考

    “Microsoft Access 14.0 对象库”COM 参考

    【讨论】:

      【解决方案3】:

      当您自己的计算机上有未处理的 MS Access 进程时,有时 Access 会报告此错误。检查任务管理器的进程列表(不是应用程序)。

      【讨论】:

        【解决方案4】:

        尝试运行这些东西...

        1. 这些计算机是否在域中?如果是,Win 7 框是否已加入域?
        2. 您是否在登录服务器时设置了权限 - 或者您是否从另一台计算机上的共享中设置了权限?设置服务器本身的权限。
        3. 在 Win 7 框中 - 确认您可以在 2003 服务器上打开共享,并更改访问文件名(只是作为测试 - 当然改回来)。
        4. 你在 win 7 机器上安装了 Access 吗?如果是,请查看您是否可以访问共享并使用访问权限打开 .mdb。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-04
          • 2023-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-10
          • 2014-07-09
          相关资源
          最近更新 更多