【问题标题】:Access to Access Database is Denied when connecting from one pc to another in Network在网络中从一台电脑连接到另一台电脑时拒绝访问 Access 数据库
【发布时间】:2013-08-24 20:30:40
【问题描述】:

我有一个带有服务器的网络和许多连接到它的计算机。我在服务器上安装了一个软件,许多客户都可以访问和使用它。

现在我使用c#/Winforms 创建了一个报告工具。总之,它连接到 Access DB 并创建报告。并且网络上的每台电脑都包含一个 Access DB ,因此我们提供了该数据库的路径,它会为我们使用如下路径连接的那台电脑创建报告:

\WinPc\Tmuser\Database\users.mdb

WinPc 是计算机名时,Tmuser 是PC 上包含数据库的共享文件夹。当我在 man 服务器上有应用程序(c#/Winform)时,它可以很好地连接到任何电脑并生成报告。

但是当我将工具放在任何一台电脑上并在另一台电脑上提供 Db 的路径时,它会给出如下错误:

而且我无法弄清楚为什么会出现此错误,因为当我在资源管理器中检查路径时,它会很好地打开访问数据库。如果您有任何建议,请告诉我。

【问题讨论】:

  • 根据错误信息它说数据库已经被另一个用户独占打开了?看看这个stackoverflow.com/questions/8229622/…
  • @Tommo1977 但为什么它在服务器上工作得非常好。问题只是当它在网络上的一台电脑上时。

标签: c# winforms visual-studio-2010 ms-access permissions


【解决方案1】:

正如错误所说,数据库由另一个用户独占打开。

我的建议是,因为您有很多可能尝试访问数据库的 PC,所以创建一个服务器-客户端项目,因此每个客户端都发送请求以向主服务器写入一行,而服务器端在主服务器将接收这些请求并将它们写入数据库,这样只有一台计算机将写入数据库,没有人会锁定数据库

另外,我可能没有看到您的代码,但我猜您在某个时候忘记释放数据库。使用流或连接时始终使用Using 语句

【讨论】:

  • 不是那种情况,如果我只是使用服务器上的应用程序连接到同一个数据库,它会很好地连接。数据库没有锁定它只是不会让我在另一台电脑上打开它。
  • @confusedMind 如果确实如此,那么您有权限问题,并且我建议的服务器客户端程序可以工作,并且可能会更好,然后让其他 PC 在主数据库上获得权限服务器...
  • 假设另一台电脑需要凭据才能登录,当使用资源管理器时,是否会出现上述错误?
  • @confusedMind 你可以尝试使用它,让我们知道它是如何为你工作的......但如果没有权限,我认为你会遇到更多问题。这一切都取决于实现
  • @ 问题是权限,它连接的电脑从另一台电脑而不是服务器上需要凭据,所以它没有让它打开文件......将当前用户更改为域帐户有效.
【解决方案2】:

问题是权限,它连接的电脑在从另一台电脑而不是服务器时需要凭据,所以它不会让它打开文件...将当前用户更改为 domain account 工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多