经典的 asp 访问数据库在 windows server 2012 上不起作用

Posted

技术标签:

【中文标题】经典的 asp 访问数据库在 windows server 2012 上不起作用【英文标题】:classic asp access DB not working on windows server 2012 【发布时间】:2014-12-06 11:37:01 【问题描述】:

您好,我尝试将我的应用程序、经典 asp 和 access db 从 Windows 7 Professional 迁移到 Windows Server 2012。

对于没有访问访问数据库的标准脚本,它工作正常。 但是当脚本使用访问数据库时出现错误,如下所示:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80004005”

[Microsoft][ODBC Driver Manager] 数据源名称未找到且无 指定的默认驱动程序 /includes/public.asp,第 64 行

这是我的连接字符串

strConn = "DRIVER=Microsoft Access Driver (*.mdb); DBQ=" & server.mappath("../private/apps.MDB")

在应用程序池中,我已经设置了

.NET Framework Version = No Managed Code 
Enable32Bit Application = True 
ManagedPipelineMode = Classic

谁能帮忙,我应该研究哪个领域?

感谢您的帮助。

【问题讨论】:

我曾经遇到过这样的问题。我在默认应用程序池中将启用 32 位设置更改为 true,但这不起作用。但是,当我创建一个新的应用程序池时,一切正常。 @john 我创建了新的应用程序池,但仍然产生同样的错误 值得一试。我推荐下面答案中建议的 OLEDB 连接字符串方法。如果它不起作用,它可能仍会给出不同的错误消息,提供更多线索 【参考方案1】:

“Microsoft Access 驱动程序”是安装 Office Access 或 Office Access Redistributable 时安装的桌面驱动程序,it is not intended for use in server-side applications。当前的 Access 驱动程序也称为 ACE(Access Connectivity Engine),它取代了 JET 引擎仅适用于单用户桌面应用程序

请改用 JET 4.0 OLEDB 或 ODBC 驱动程序(首选 ODBC)。此驱动程序包含在随 Windows Server 开箱即用的 MDAC 中。连接字符串模板是这样的:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\somepath\myDb.mdb;

Provider=Microsoft.Jet.ODBC.4.0;Data Source=c:\somepath\myDb.mdb;

请注意,JET 4.0 驱动程序仅在 32 位模式下可用(但您已将应用程序池设置为 32 位,因此这不会成为问题)。

请注意,JET 在这一点上实际上已经过时了(它的继任者 ACE 仅用于单用户桌面应用程序),仅在 32 位版本中可用就证明了这一点。服务器端和多用户应用程序应使用 SQL Server(SQL Server 现在支持“LocalDb”模式,该模式引入了更简单的工作体验,类似于 Access,并且在 Express Edition 中可用)。如果您绝对需要一些简单且资源较少的东西,我建议您使用 SQLite,但是您将负责在多线程/并发环境中正确使用 SQLite API,例如网络服务器(包括经典 ASP)。

更新:

我将修改我的答案以警告将 LocalDb 与 ASP.NET 或一般的服务器应用程序一起使用是不可取的 - 实际上没有什么意义 - 如果您使用的是 LocalDb,那么您已经安装了 SQL Server,并且如果您已经安装了 SQL Server,那么您不妨在“正常模式”而不是 LocalDb 模式下使用它。

【讨论】:

对于它的价值,来自 Microsoft here 的 ASP.NET 教程说“LocalDB 尤其不应该用于 Web 应用程序的生产,因为它不是为与 IIS 一起工作而设计的。”

以上是关于经典的 asp 访问数据库在 windows server 2012 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Windows Server 2003 中使用经典 ASP 的 MS Access 数据库

带有 COM 的经典 ASP 在 Windows Server 2008 R2 上抛出“未找到数据源名称且未指定默认驱动程序”

经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)

访问和经典 ASP 错误 80004005 超出系统资源

经典 ASP - 使用 Windows 身份验证的 SQL Server 2008 连接字符串

在 IIS7.5 上运行经典 ASP 站点