ADO Recordset Timeout Error

Dear Experts,
I am working with an ADO recordset in a VBScript and am encountering the following error:

Code: 80004005
Error: [Microsoft][ODBC SQL Server Driver] Timeout Expired
Source: Microsoft OLEDB Provider for ODBC Drivers

The error is thrown when I call MoveNext within a Do While loop:

Do While Not rst.EOF

  'code block

  rst.MoveNext       'point at which error occurs
Loop

It seems to only occur when it is on the last record and should be moving to EOF.  I am not explicitly setting any connection or command timeout.  Recordset properties are as follows:

rst.CursorType = 3            'adOpenStatic
rst.CursorLocation = 3       'adUseClient
rst.LockType = 1               'adLockReadOnly

What is baffling to me is that I don't get timeout errors at any other point, but only when it's at the last record.  Any ideas as to why it only happens then?  I don't think I've ever encountered this before.  Thanks in advance for suggestions.

-Chris
LVL 1
uncle_hoAsked:
Who is Participating?
 
SethiConnect With a Mentor Commented:
Not sure. As I see you are specifying ClientSide cursor in your code.
0
 
SethiCommented:
Try while loop:

While rst.EOF=False

  'code block

  rst.MoveNext       'point at which error occurs
Wend
0
 
uncle_hoAuthor Commented:
Sorry Sethi, but I still haven't had a chance to test this out.  I'll let you know how it works out once I can get around to it.  Thanks for the help.
0
Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

 
SethiCommented:
Sure.
0
 
uncle_hoAuthor Commented:
Tried the while loop, but ran into same errors.  As a workaround, I am now retrieving the record count after opening the recordset, then using a For loop.  Before MoveNext is called, I compare the counter to the total record count and if it is already on the last record and would be going to EOF, I never call movenext.  Seems to be sufficient.  I may also try a disconnected recordset, if I have a chance.

Thanks.
0
 
SethiCommented:
But I am surprised why you are getting this problem.
0
 
uncle_hoAuthor Commented:
Me too.  The error is somewhat sporadic, but seems more frequent with larger recordsets.
0
 
uncle_hoAuthor Commented:
UPDATE:  calling RecordCount has also been timing out, as well as a MoveLast call, so my work-around didn't prove to be very effective.  I ran a SQL Server trace and saw that there were a ton of sp_cursorfetch calls generated by the recordset, even though I'm specifying client-side cursors in the connection object and the recordset object.  I know I'm getting into more of a database area than programming, but any idea why it appears to be using server-side cursors?
0
 
uncle_hoAuthor Commented:
Thanks for your time.  I think I have some DB investigation to do.
0
 
SethiCommented:
Do tell me when you come to some conclusion. Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.