RobertoTY
asked on
How to set a recordset.open timeout???
I have an application that generates queries dinamicaly and some of them are huge. I'd like to set a time limit for the queries.
I'm using ADO recordsets to run the queries in SQL 7. I've tried to set the CommandTimeout property for the connection i use in the Recordset.Open Method, but it didn't work.
Here is my test:
Set con = CreateObject("ADODB.Connec tion")
Set rs = CreateObject("ADODB.Record set")
con.CommandTimeout = 5
con.CursorLocation = adUseClient
con.Open "Provider=SQLOLEDB.1;Passw ord=*****; Persist Security Info=True;User ID=USR;Initial Catalog=DB;Data Source=Server"
rs.Open "select * from table", con, adOpenStatic, adLockReadOnly
The query runs for several seconds, even if i have set the CommandTimeout to 5 seconds.
I'm using ADO recordsets to run the queries in SQL 7. I've tried to set the CommandTimeout property for the connection i use in the Recordset.Open Method, but it didn't work.
Here is my test:
Set con = CreateObject("ADODB.Connec
Set rs = CreateObject("ADODB.Record
con.CommandTimeout = 5
con.CursorLocation = adUseClient
con.Open "Provider=SQLOLEDB.1;Passw
rs.Open "select * from table", con, adOpenStatic, adLockReadOnly
The query runs for several seconds, even if i have set the CommandTimeout to 5 seconds.
The Connection CommandTimeout property only affects the Connection Execute method. So that probably explains the reason it has no effect.
One solution would be to use a Stored Prodecure and set the CommandTimeout property for the Command object.
Hope this helps,
Anthony
One solution would be to use a Stored Prodecure and set the CommandTimeout property for the Command object.
Hope this helps,
Anthony
ASKER
I think that even using the connection.execute method, I face the same problem. I've made the following test and the query remains running even after the time estipulated for timeout.
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = CreateObject("ADODB.Connec tion")
con.CursorLocation = adUseClient
con.Open "Provider=SQLOLEDB.1;Passw ord=****;P ersist Security Info=True;User ID=USR;Initial Catalog=DB;Data Source=SRV"
con.CommandTimeout = 3
Set rs = con.Execute("select * from TABLE")
I think there must be another way to set a timeout for these queries, since this property should be for something like an Idle timeout.
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = CreateObject("ADODB.Connec
con.CursorLocation = adUseClient
con.Open "Provider=SQLOLEDB.1;Passw
con.CommandTimeout = 3
Set rs = con.Execute("select * from TABLE")
I think there must be another way to set a timeout for these queries, since this property should be for something like an Idle timeout.
Roberto,
I could be wrong about this, but I believe the Connection CommandTimeout property needs to be specified prior to the Open.
Have you tried this and if so does it have any effect?
Suerte,
Anthony
I could be wrong about this, but I believe the Connection CommandTimeout property needs to be specified prior to the Open.
Have you tried this and if so does it have any effect?
Suerte,
Anthony
ASKER
Extracted from msdn:
On a Connection object, the CommandTimeout property remains read/write after the Connection is opened.
It doesn't work either.
I discovered that recordset has a dinamic property:
Command Time Out
But it didn't work as well.
On a Connection object, the CommandTimeout property remains read/write after the Connection is opened.
It doesn't work either.
I discovered that recordset has a dinamic property:
Command Time Out
But it didn't work as well.
ASKER
Extracted from msdn:
On a Connection object, the CommandTimeout property remains read/write after the Connection is opened.
It doesn't work either.
I discovered that recordset has a dinamic property:
Command Time Out
But it didn't work as well.
On a Connection object, the CommandTimeout property remains read/write after the Connection is opened.
It doesn't work either.
I discovered that recordset has a dinamic property:
Command Time Out
But it didn't work as well.
Roberto,
Yes, I know I spoke too soon: I checked the CommandTimeout and in my case it works as advertised, placed prior to the Connection open or after. Basically it triggers a Timeout expired (-2147217871).
I am not sure why it is not working in your case. The only other thing I can suggest is that you try out the CommandTimeout property of the Command object. Perhaps you will have better luck.
Anthony
Yes, I know I spoke too soon: I checked the CommandTimeout and in my case it works as advertised, placed prior to the Connection open or after. Basically it triggers a Timeout expired (-2147217871).
I am not sure why it is not working in your case. The only other thing I can suggest is that you try out the CommandTimeout property of the Command object. Perhaps you will have better luck.
Anthony
ASKER
acperkins,
I am very curious to see the code you said that works for you. Can you send me the code sample you used? Maybe i'm doing something wrong.
I am very curious to see the code you said that works for you. Can you send me the code sample you used? Maybe i'm doing something wrong.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Hi RobertoTY,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will suggest to:
Accept acperkins@devx's comment(s) as an answer.
RobertoTY, if you think your question was not answered at all or if you need help, you can simply post a new comment here. Community Support moderators will follow up.
EXPERTS: If you disagree with that recommendation, please post an explanatory comment.
==========
DanRollins -- EE database cleanup volunteer
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will suggest to:
Accept acperkins@devx's comment(s) as an answer.
RobertoTY, if you think your question was not answered at all or if you need help, you can simply post a new comment here. Community Support moderators will follow up.
EXPERTS: If you disagree with that recommendation, please post an explanatory comment.
==========
DanRollins -- EE database cleanup volunteer
Comment from expert accepted as expert
Computer101
E-E Moderator
Computer101
E-E Moderator
but if the query already began to run, then the commandtimeout does not apply.