在本地开发了一个asp+access程序。
系统:win7 IIS7 并装有office2007
系统运行正常,并且开发完毕。
目前需要将程序全部考到服务器上。服务器环境
系统:win2003 IIS6 没装office
但是系统总是显示错误信息。如下
ADODB.Recordset 错误 '800a0e7d'
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。
/Conn.asp,行 20
、
下面贴上conn.asp文件
<% Const Db_Type = "ACC" Const Db_DateTime = "Now()" Dim Conn,ConnStr,Rs Dim SysSiteDbPath SysSiteDbPath = "Db/Db.mdb" ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbdns & SysSiteDbPath) Call OpenConn() Set Rs = Server.CreateObject("Adodb.RecordSet") If Application("Ok3w_SiteTitle") = "" Then Application.Lock() Sql = "select * from Ok3w_SiteConfig" Rs.Open Sql,Conn,1,1 这事第20行,也是错误提示的位置 For i = 0 To Rs.Fields.Count - 1 Application("Ok3w_" & Rs.Fields(i).Name) = Rs(i).Value Next Rs.Close Application.UnLock() End If Private Sub CloseConn() Conn.Close Set Conn = Nothing End Sub Private Sub OpenConn() On Error Resume Next Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConnStr If Err.Number>2 Then 'Response.Write("数据库连接错误") 'Err.Clear 'Response.End() Else On Error Goto 0 End If End Sub Set Rs = Server.CreateObject("Adodb.RecordSet") Rs.open "select * from Pic",conn,3,3 Pic1 = Rs("Pic1") Pic2 = Rs("Pic2") Pic3 = Rs("Pic3") Pic4 = Rs("Pic4") Pic5 = Rs("Pic5") Pic6 = Rs("Pic6") Pic7 = Rs("Pic7") Pic8 = Rs("Pic8") link1 = Rs("link1") link2 = Rs("link2") link3 = Rs("link3") link4 = Rs("link4") link5 = Rs("link5") link6 = Rs("link6") link7 = Rs("link7") ink8 = Rs("link8") Rs.close %>
请大家帮忙。百度上搜了一下貌似是权限的问题,但是我将Everyone权限都加了。还是不行。
第零,先排除其他错误可能,把SERVER.MAPPATH后的文件夹路径打印在页面上看看,是否路径错误。
第一,不需要服务器安装OFFICE,这个是肯定的。
第二,看看你的WIN2003是否64位,如果是64位,你搜索时包含64位,好像是修改一个注册表位置,我以前碰到过。也是搜索。确认方法是你试试看32位上是否正常运行,别告诉我你本地没有WIN2003环境哦。
服务器上是32位win2003,确实是报错,貌似找不到数据库?
@子心520:
Provider=Microsoft.Jet.OLEDB.4.0
这个采用的是Microsoft Data Access技术,ACCESS肯定不用安装。
在微软网站可以下载到MDACTYPE.EXE,这个是负责访问ACCESS的。通常只有出了问题才需要自己安装。
排查错误有时很麻烦的,我的建议是:
1、本地虚拟机安装一个WIN 2003,IIS,看你的网站是否能正常运行。
2、还是这个错误的话,检查MapPath后的路径。
3、IIS是否打开了“允许父路径“选项。
愚见:必须装驱动
不用装OFFICE,还是找其它原因!
access是office是的一个组件。必须要装的吧。
不装驱动也可以.