Ms access Microsoft Jet数据库引擎无法打开网络位置上的文件

Ms access Microsoft Jet数据库引擎无法打开网络位置上的文件,ms-access,asp-classic,Ms Access,Asp Classic,我正在开发一个ASP经典网站,它可以连接到MS Access数据库并实时显示数据(我知道MS Access不是实现此目的的最佳选择,但我的公司在所有方面都使用它,所以我现在决定使用它)。当MS数据库在我的硬盘上(C:)时,它工作正常。但是,当我将数据库移动到某个网络位置(如U:\tracking)时,会出现以下错误: Microsoft JET Database Engine error '80004005' The Microsoft Jet database engine cannot op

我正在开发一个ASP经典网站,它可以连接到MS Access数据库并实时显示数据(我知道MS Access不是实现此目的的最佳选择,但我的公司在所有方面都使用它,所以我现在决定使用它)。当MS数据库在我的硬盘上(C:)时,它工作正常。但是,当我将数据库移动到某个网络位置(如U:\tracking)时,会出现以下错误:

Microsoft JET Database Engine error '80004005'
The Microsoft Jet database engine cannot open the file 'U:\tracking\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
我知道这可能是由于为MS Access数据库创建临时文件(.ldb)的安全权限(读写)。我重置了U:\tracking文件夹的安全权限,该文件夹包含数据库,但它不起作用。我甚至完全控制了“组和用户名”会话中列出的每个帐户,但错误仍然存在

我还检查了IIS管理器中的身份验证设置。唯一启用的设置是匿名身份验证,此时我使用应用程序池标识。如果我使用特定用户,我可以将其添加到上述权限列表中,并为其授予适当的权限,但我不能保证它是适当的。关于我应该如何连接到网络位置上的数据库,有什么想法吗?任何帮助都将不胜感激

以下是我用于连接数据库的简单代码:

Dim dbCon
Set dbCon = Server.CreateObject("ADODB.Connection")
dbCon.Provider = "Microsoft.Jet.OLEDB.4.0"
dbCon.Open = "U:\tracking\database.mdb"

如图所示,考虑使用ASO连接字符串参数

<%
set conn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"
conn.open server.mappath("database.mdb")

conn.close
%> 


此外,如果需要,不需要显式定义路径名。这一点尤其正确,因为反斜杠对于使用前斜杠的web URL来说是有问题的。

您需要授予对共享和文件夹本身的访问权限。对不起,您所说的“授予对共享的访问权限”是什么意思?我能够读取/写入/修改网络位置(如U:/)中的文件。请与网络管理员联系。共享有一组权限,驱动器/文件夹有另一组。问题中的权限不是您的权限,而是分配给应用程序的权限。要访问网络资源,需要将应用程序池标识设置为网络服务帐户(但不建议这样做)。谢谢,但使用ASO连接字符串参数并没有更改任何内容。我认为问题在于网络位置许可,而不是连接代码。Server.mappath可能不适用于我的情况,因为我无法将数据库放在网站的根目录中(由于特定要求)。我想您可能指的是ADO(ActiveX数据对象)。经典ASP使用的版本称为
ADODB
(所有ADO组件都使用名称空间)。@有几件事,不要在可公开访问的网站上使用MS Access。请使用SQL Express/MySQL或类似工具,MS Access从未设计为在web环境中使用。另外,
Server.MapPath()
是个坏主意,因为它要求从网站访问数据库,理想情况下,数据库文件应始终存储在web应用程序空间之外,并具有web应用程序访问它的适当权限。但从你最初的问题来看,你似乎已经意识到了这一点。