我知道,这个话题听起来很糟糕。但实际上我必须把这些技术联系起来。
问题
我目前正在将公司的内部网(主要用经典ASP编写)从带IIS 6的Windows Server 2003 32位迁移到带IIS 7.5的Windows Server 2008 R2 64位。除了一个子页面使用set conn = server.createobject("adodb.connection")
连接到connstring="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=pathtomdbwhichisreallythere"
之外,其他一切都很好。
我打开连接(conn.open connstring
),构建一个查询字符串,然后,当我想要set rsresult = conn.execute(sqlusr)
时,我得到
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] ODBC--connection to 'TABLE_THAT_ACTUALLY_EXISTS' failed.
该错误被抛出到具有conn.execute(sqlusr)
的行。当然,它在以前的环境中运行良好。
我试过什么
- 连接到Windows Server 2008上的MS Access accdb文件-我知道Windows Server 2008预装了MSJet,所以这个问题没有用(提醒:mdb用于Access 97)
- http://support.microsoft.com/kb/168336-这实际上是连接的方式,但我认为有些东西可能是错的,拼写错误
- 我将ODBC数据源从以前的服务器复制到新的服务器(我保留了名称)-问题仍然存在
- 我在Windows Server 2008计算机上安装了最新更新
其他信息
mdb
将在Access 97中只打开(为什么?不要问我:/我不是唯一一个试图在Access 2000/2003/2007/2010中打开它的人,但没有成功)- IIS 7.5上此网页的应用程序池的
Enable 32-bit Applications
选项设置为true。父路径也处于启用状态
我将感谢您提供有关检查/操作/如何解决此问题的任何其他提示。
好吧,这是一个有趣的问题。
First-使用经典ASP-IIS 7.x-ADODB时存在一个记录在案的问题。JET.4.0你可以看到一个指南来解决你的问题
在IIS 上使用经典ASP与Microsoft Access数据库
Second-我强烈建议您不要再使用JET DRIVER,而是使用ADODB。ACE.12.0驱动程序,虽然您可以获得与JET驱动程序相同的功能,但您还可以获得新的Access文件格式可以读取的优势,并且该驱动程序可以在纯64位环境中实现
ACEDB驱动程序下载 ;Microsoft;
使用此驱动程序,您可以将Enable 32-bit Applications
设置为false
好的,我解决了我的问题。我能够很容易地将数据和表格从Access 97导入Access 2010。然后我遇到了一些asp及其与mdb的连接问题。所以我直接连接到数据库。我仍然需要修复sql语句,但主要问题已经解决。
谢谢!