经典的asp连接访问数据库,找不到文件

时间:2009-07-23 18:06:05

标签: ms-access asp-classic connection

我不得不在一个小工作的经典ASP工作。 我试图在我的计算机上运行该站点进行测试。我正在运行Windows 7和IIS 7。

从本地主机运行时出现错误,检查日志时出现错误: 80004005 | Could_not_find_file_'c:\的Inetpub \ wwwroot的\ SC \网站\数据\ si.mdb'

我的代码是这样的

dim objConn
dim objRS
set objConn = Server.CreateObject("ADODB.Connection")

objConn.Provider="Microsoft.Jet.OLEDB.4.0"
Set objRS = Server.CreateObject("ADODB.Recordset")

objConn.Open("c:/inetpub/wwwroot/sc/website/data/si.mdb")

但这是文件的确切路径。 谁知道我怎么能访问这个?代码是错误还是我需要设置IIS设置?

我没有安装任何版本的Office,会导致问题吗?

我尝试了很多不同的路径和提供商设置,但没有一个有效。

修改 我正在处理的代码实际上没有代码中的任何连接字符串细节,但该人说它仍然在他们的计算机上作为朋友设置测试环境。

他不记得他的朋友如何设置但是说“我记得看到他,他通过数据源(ODBC)连接到数据库,因为正如你在代码中所说的那样,没有直接的路径,因为它使用'全球'(不知道正确的用语)。“

6 个答案:

答案 0 :(得分:1)

这可能是权限问题。

一种简单的检查方法是为文件所在的目录提供完全访问权限。

答案 1 :(得分:1)

您可以尝试使用Process Monitor来确切查看哪个文件未找到,或者是由权限问题引起的。

此外,虽然使用正斜杠而不是反斜杠通常不是问题,但您可能需要尝试更改它以防万一。

如果您使用的是x64版本的Windows,则此模式不支持JET,但您可以通过configuring IIS to run x32 applications绕过它。为此,请在命令行中运行以下命令:

cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true"
iisreset

可能不需要第二个命令,但我猜你可能需要在此更改生效之前重新启动IIS。

听起来代码之前设置为使用全局DSN,因此连接字符串中缺少路径,但应该仍然存在某种连接细节(如DSN名称)。

答案 2 :(得分:0)

也许你可以使用这里使用的Server.MapPath函数http://www.aspwebpro.com/tutorials/asp/dbconnectionopen.asp

答案 3 :(得分:0)

您的连接字符串看起来不合适。

查看this是否有帮助。

编辑:您是否安装了JET oledb提供程序?

EDIT2:在这个问题的帮助下检查oledb提供者是否存在 How to check if an OLEDB driver is installed on the system?

答案 4 :(得分:0)

前几天我回答了potentially related question。你在运行64位Windows 7吗?如果是这样,对于x64操作系统绝对没有Jet支持。在真正的.NET应用程序中,您只需使用x86作为目标重新编译应用程序。但在你的情况下,我不确定解决方案。

赛斯

答案 5 :(得分:0)

为什么你的字符串会说: “C:/inetpub/wwwroot/sc/website/data/si.mdb”

而不是正常的Windows路径 “C:\的Inetpub \ wwwroot的\ SC \网站\数据\ si.mdb”

此外,您可以转到“控制面板” - >“管理工具” - >“数据源(ODBC)”,并在“系统”选项卡下创建新的命名DSN。例如,将其命名为si并确保类型为access,为其提供访问db的正确路径,然后您的代码就是:

dim objConn
set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open("si")