您好我尝试将我的应用程序,经典的asp和访问数据库从Windows 7专业版迁移到Windows Server 2012。
对于没有访问访问数据库的标准脚本,它工作正常。 但是当脚本使用访问数据库时,我得到错误,如下所示:
Microsoft OLE DB Provider for ODBC Drivers错误'80004005'
[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且没有 默认驱动程序指定/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
任何人都可以提供帮助,我应该在哪个方面进行调查?
感谢您的帮助。
答案 0 :(得分:2)
“Microsoft Access驱动程序”是安装Office Access或Office Access Redistributable时安装的桌面驱动程序, it is not intended for use in server-side applications 。当前的Access驱动程序也称为ACE(访问连接引擎),仅替换单用户桌面应用程序的JET引擎 。
相反,请使用JET 4.0 OLEDB或ODBC驱动程序(首选ODBC)。此驱动程序包含在MDAC中,它随Windows Server开箱即用。连接字符串模板是这样的:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\somepath\myDb.mdb;
OR
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”-mode,它引入了类似于Access的简单工作体验,并且可以在Express Edition中使用)。如果您绝对需要简单且资源不足的东西,我建议使用SQLite,但是您将负责在多线程/并发环境(如Web服务器(包括经典ASP))中正确使用SQLite API。
我会修改我的回答,警告一般使用LocalDb与ASP.NET或服务器应用程序是不可取的 - 实际上并不重要 - 如果你使用的是LocalDb,那么你已经安装了SQL Server,并且如果您已经安装了SQL Server,那么您也可以在“正常模式”而不是LocalDb模式下使用它。