★★☆从来没有人见过的问题,请高手进来!(顶者有分!)☆★★

andy2001p 2004-04-20 02:06:17
这种错误怎么办?
==================================================================
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt


以下是代码:
===================================================================
rs.open sql,conn,1,1
do while not rs.eof
response.write rs("task_value")
rs.movenext
loop
rs.close
===================================================================
...全文
27 点赞 收藏 26
写回复
26 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wj253 2004-04-20
帮你顶
回复
jiffer 2004-04-20
up
回复
andy2001p 2004-04-20
明天结帐,看看有没有更好的方法?
回复
lawdoor 2004-04-20
再试试这些方法吧:

1.如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"
Conn. Properties("Connect Timeout") = 15 '以秒为单位,加入连接失效时间
Conn.open DSNtest
%>

2.如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集。例如:
<%
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
. . .
cmd1 = txtQuery.Text
Set rs = New ADODB.Recordset
rs.Properties("Command Time Out") = 300
'同样以秒为单位,如果设置为 0 表示无限制
rs.Open cmd1, cn
rs.MoveFirst
. . .
%>
回复
dreampeter 2004-04-20
记录集打开后都及时关闭注销了么?
尝试在使用完数据库后

rs.close()
set rs=nothing
set conn=nothing
之类的语句注销相关数据库连接或记录集
回复
andy2001p 2004-04-20
Jaron、zorou_fatal、possible_Y、xxrl、inelm
================================================
有没有在呀?
回复
lawdoor 2004-04-20
也可能有这个原因:
<!-- #include file="../Inc/conn.asp" -->
<%
set rs = server.CreateObject("adodb.recordset")
.................
rs.open sql,conn,3,2
................
................
...............
rs.close
set rs = nothing
conn.close
set conn= nothing
%>
每一次程序结束时候一定要关闭,以免资源耗尽
回复
Swanzy 2004-04-20
这个我认为是数据表的锁定问题,只要没有多个用户对同一数据进行操作的话,系统会自动解锁。不过我还没有碰过过,帮你顶一顶~~~~~~~~
回复
wzy9645 2004-04-20
是不是在其它地方没有关闭RS以及CONN?
用户数达到一定数目时才可能会出现这种情况
回复
lawdoor 2004-04-20
主要原因是:
数据库服务器挂的库太多,导致连接进程繁忙!
解决办法:
程序的解决方法很有限,建议从硬件着手才是根本
回复
andy2001p 2004-04-20
TO: lawdoor(风语者) ( )
==================================
是虚拟主机!
回复
lawdoor 2004-04-20
因为你的情况比较特殊,是数据库本身的并发线程过多,我见过新网的虚拟主机,SQL SERVER的一个数据库上挂的就有几百个网站,不行的话就找IDC协商一下,让他们的网管给你手动建一个dsn,不然就换虚拟主机类型吧,比如原来是经济型什么的,升一下级别吧,
或者最好的解决办法是做一个主机托管,现在普通的PC,就比你做虚拟主机强多了,再说也不是太贵,根据自己的经济实力,买一个适合长期发展的服务器是最好的办法。
回复
smile9961 2004-04-20
我也想知道该如何解决。
顶!


回复
lawdoor 2004-04-20
哦,虚拟主机么?
回复
andy2001p 2004-04-20
TO: lawdoor(风语者)
============================================
现在是这样连的:

driver={SQL Server};server=andylee;uid=sa;pwd=;database=tkcnt;

因为这个是租用的空间,所以不能用DSN 吧!

回复
lawdoor 2004-04-20
关键看能不能循环出来!然后就可以进行增删编操作了呀?
回复
lawdoor 2004-04-20
改变一下数据库的连接方法吧,试试看有没有作用吧?
回复
andy2001p 2004-04-20
TO: lawdoor(风语者)
=======================================
你的回答应该是正确的,但是如何来解决这个问题呢?
回复
lawdoor 2004-04-20
改变一下连接方法吧,看那一个效果更好:
用DSN连接:

<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=MyDSN;UID=user;PWD=password;DATABASE=databasename"
%>

不用DSN连接:

<%
Set conn = Server.CreateObject("ADODB.Connection")
DSNtemp="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=databasename"
conn.open DSNtemp
%>
回复
cjf1009 2004-04-20
这个错误本来就是用户多了引起的。Connection is busy 嘛!
没什么办法,数据库服务器的过,同时连接数设的少。
回复
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-04-20 02:06
社区公告
暂无公告