【问题标题】:Access Database already exclusively opened by another userAccess 数据库已被其他用户独占打开
【发布时间】:2012-01-04 00:04:40
【问题描述】:

我有一个访问数据库,它位于服务器 x 上,iis 正在服务器 y 上运行。我的一个网页从访问数据库访问数据。如果有人打开了访问数据库,比如说我们网络上的最终用户,则网页将失败,并显示...已由另一个用户以独占方式打开错误消息。

我创建了一个本地访问数据库并使用链接表来访问这些表。即使我仍然得到已经由另一个用户错误打开的错误。如果我通过 Windows 资源管理器浏览到服务器 x 并打开数据库,我可以毫无问题。所以我的问题是如何模拟与数据库的相同类型的连接而不会引发错误是访问数据库的权限问题还是我的连接字符串中允许我访问数据库的内容。

由于它在我的 connection.open 命令期间引发错误,我认为它要么与权限相关,要么与我需要添加到我的连接字符串中的其他内容有关。我已授予对本地目录上的 IIS AppPool\ 的完全控制权,我的 access 数据库的本地实例所在的目录中,但似乎没有任何区别。

我的连接字符串如下所示:

Private Shared connSheriff As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\serverx\directory\Access\MyDatabase.mdb;Jet OLEDB:Database Password=property;")

【问题讨论】:

  • 您是否以管理员身份打开数据库?如果您怀疑连接字符串,那么可能值得发布它。
  • Private Shared connSheriff As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\serverx\directory\Access\MyDatabase.mdb;Jet OLEDB:Database Password=property;" )
  • 您可能会考虑使用您正在使用的网络编程语言标记您的问题,以便接触更广泛的受众。另外,我建议您在问题中添加一些换行符、标点符号和其他格式,以使其更具可读性。
  • 您是否还授予了 .mdw 文件所在文件夹中 IIS AppPool 的完全控制权限?
  • 我认为这是一个权限问题。我目前正在尝试自己解决类似的问题。通过将 db 文件夹的完全权限授予本地 ASPNET 用户,我能够使应用程序与本地数据库一起工作。如果您查看计算机管理控制台下的应用程序事件日志,您可能会获得更多信息。

标签: ms-access iis-7.5


【解决方案1】:

有一些options within the mdb 改变了默认打开数据库的方式,这些应该是您的第一个调用端口,特别是将“默认打开模式”设置为“共享”。

您已经拆分了数据库(共享后端中的数据表、链接表以及前端中的其余部分)。确保每个用户使用单独的前端 mdb 副本,否则您会遇到锁定问题。

有一个命令行开关 (/excl) 设置独占模式,但你只是省略了这个来打开共享的数据库,所以我怀疑这是一个问题。

您可能已经知道这一点,但“Shared”修饰符与应用程序或用户之间的共享无关,而是在您的类的实例之间共享连接变量(c# 等效项是“静态”)

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多