【问题标题】:classic asp connecting to access database, file not found经典asp连接访问数据库,找不到文件
【发布时间】:2009-07-23 18:06:04
【问题描述】:

我不得不在经典 ASP 中工作以完成一份小工作。 我正在尝试让该站点在我的计算机上运行以进行测试。我正在运行 Windows 7 和 IIS 7。

从本地主机运行时出现错误,在检查日志时出现错误: 80004005 | could_not_find_file_'c:\inetpub\wwwroot\sc\website\data\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) 连接到数据库,因为正如您在代码中所说,没有直接路径,因为它使用“全局”某事'(不知道正确的术语)。”

【问题讨论】:

  • 查看我最近对命名 dsn 的编辑。

标签: ms-access asp-classic connection


【解决方案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 名称)。

【讨论】:

  • 我使用了进程监视器,它显示该文件不存在。尽管它显然是。我使用的是 32 位的。我不敢相信我仍然试图在 2-3 小时后解决这个问题,真是浪费了一天!如果没有连接字符串详细信息,我将如何进行设置?他原来有 con.Open si.mdb "" ""
  • 我知道您已经检查过...但我认为这是此处暗示的权限问题。赛斯
  • 我倾向于同意 Seth,这听起来仍然像是权限问题。您是否尝试过重命名文件并将其移动到其他位置?我建议将它放在根目录中,例如。 c:\db.mdb 并尝试在那里连接它(保持进程监视器打开以及监视事物)。
  • 我会接受这个答案,因为它显示了您可以采取的许多步骤来解决这个问题。我不能删除这个问题:(我很惭愧地说.....这是一个拼写错误!!!
【解决方案2】:

这可能是权限问题。

一种简单的检查方法是向所有人授予文件所在目录的完全访问权限。

【讨论】:

  • 即使在为所有人设置了完全权限后,我仍然得到完全相同的错误:(
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    您的连接字符串在我看来不正确。

    看看this 是否有帮助。

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

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

    【讨论】:

    • 我试过了,但得到了同样的错误。虽然当我尝试工作组设置时,我得到了一个不同的错误,说 |Could_not_find_installable_ISAM 但我认为这也不是我想要的设置。
    • 如何检查?我没有安装Office,所以不确定是否是问题所在。我有VS2008 Pro,所以也许驱动程序附带?
    • 看看这个stackoverflow.com/questions/113860/…是否有帮助。
    • 所以我搜索了 JET 并在我的机器上找到了 DLL,无法立即回忆起确切的文件名。所以我确定这不是问题
    【解决方案5】:

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

    赛斯

    【讨论】:

    • 我是 32 位的,所以可能不是
    【解决方案6】:

    为什么你的字符串说: "c:/inetpub/wwwroot/sc/website/data/si.mdb"

    而不是普通的windows路径 "c:\inetpub\wwwroot\sc\website\data\si.mdb"

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

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

    【讨论】:

    • 我尝试了两种方式,正斜杠和反斜杠,这可能只是我尝试的最后一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多