ADO Timeout

A have a stored procedure that executed within 0.5 sec from Query Analyzer.
The same procedure with the same parameters, if called remotely using ADO, returns the data within the time defined as ADO timeout + 0.5 sec.
In the Profiler, I can see that nothing happened between the SP end and RPC SP end; it just waits as long as ADO timeout defined for this call.
It happens eventually, not always.

Thank you!

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Anthony PerkinsCommented:
Try posting the relevant code.  Perhaps someone can see something.

zacharAuthor Commented:
Here is ADO call. I can provide SP code as well, but it's pretty long...

Dim objADOCommand As New ADODB.Command
Dim objADODSConnection As ADODB.Connection
Dim objADORecordset As New ADODB.Recordset

Set objADODSConnection = New ADODB.Connection

objADODSConnection.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DBVIHosp;Data Source=DVDEVSQL2"
objADODSConnection.CursorLocation = adUseClient
objADODSConnection.Mode = adModeUnknown

Set objADOCommand = New ADODB.Command
Set objADOCommand.ActiveConnection = objADODSConnection
objADOCommand.CommandType = adCmdText
objADOCommand.CommandText = "execute PatientAspects_cmd_prc '303056217', 1, '1,2,3,5,6,7,8,20,9,13,10,14,16,15,17,18', '0,0,0,0,0,0,0,0,0,0,0,1!2!3!4!5!6,0,0,0,0', '128', 1, '128', 1, '1963-11-17,1963-11-17,1963-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,1983-11-17,2002-11-17', '2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01,2079-01-01'"
objADOCommand.CommandTimeout = 5

   Set objADORecordset = objADOCommand.Execute


Anthony PerkinsCommented:
I do not see anything obvious that could be causing prroblems.  One minor (and unrelated) problem: There is no need to instantiate the Command and Recordset object twice.  Instead of:

Dim objADOCommand As New ADODB.Command
Dim objADODSConnection As ADODB.Connection
Dim objADORecordset As New ADODB.Recordset

Change it to:
Dim objADOCommand As ADODB.Command
Dim objADODSConnection As ADODB.Connection
Dim objADORecordset As ADODB.Recordset

I do not believe this will make any difference, but have you tried setting up the Command object's Execute method  explicitly defining the parameters?

One thing that you should be aware of (in case you are not) is that there are a couple of differences between your ADO code and Query Analyzer
1. QA has an infinite timeout.
2. QA uses the ODBC provider and you are using the OLEDB provider.

Again, I realize this is unrelated, but have you considered streamlining your Stored Procedure? You are passing 10 parameters, many of which appear to include comma delimited parameters, which I am assuming you are parsing out into temporary tables.

Sorry I did not have any direct help fro your problem,

Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

zacharAuthor Commented:
Thanks for help!
I have tried all this - no result… As well I have connected with ODBC data source, with the same result.
Again, this phenomenon happens sometimes, and restarting SQL server removes it, or it disappears by itself.
I saw such behavior once, and than simple recompiling of SP removed the problem completely, but it does not help now.
Anthony PerkinsCommented:
I am sorry, but I am out of ideas.  Hopefully someone can help you out.

most probably you need to tune indexes used within the procedure query. When you execute query via SQL Query Analyzer on the local machine you often do not compete for the same resources as the queries executed from ADO. Translates in the totally different timing.

zacharAuthor Commented:
I do not think so. I saw in query analizer, when the procedure is called remotely, the SP is finished within the normal time, and then between SP finish and RPC finish there is no activity. As well, the execution plans are the same whether SP called from QA or by RPC.

Anyway, I have found something suspicious- one of the clients was connected using Named Pipes, all others - TCP. Since this client fixed protocol to TCP, this strange behavior not returned. Of cause I am not sure that is the reason of the problem, I will just wait to be sure.

Thank you.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
I think you found it. Named pipes protocol is slow to close connections and have caused effect similar to wheat you have indicated.
I suggest Zachar be refunded the points and finalize this question by keeping it for EE ( not sure guys how you go about it ) since it has a useful information.
Hope Zachar would agree with this suggestion. If I do not hear by the end of day will post a note into the appropriate EE board.

Thank you.
zacharAuthor Commented:
I agree.

Thank you.
Anthony PerkinsCommented:
Here is how to do it:

I answered my question myself. What do I do?

Question is PAQed and 500 points refunded.

Experts Exchange Moderator
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.