0

嗨,我尝试将我的应用程序、经典 asp 和 access db 从 windows 7 专业版迁移到 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

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

感谢您的帮助。

4

1 回答 1

2

“Microsoft Access 驱动程序”是安装 Office Access 或 Office Access Redistributable 时安装的桌面驱动程序,它不适用于服务器端应用程序。当前的 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,但是您将负责在 Web 服务器(包括 Classic ASP)等多线程/并发环境中正确使用 SQLite API。

更新:

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

于 2014-12-06T12:08:24.467 回答