Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

How do I diagnose the Timeout of a SQL command called from my C# web service app

Posted on 2014-03-25
8
Medium Priority
?
1,139 Views
Last Modified: 2014-04-11
I am calling a stored proc in a MS SQL server database that, when run in SSMS, takes 12 seconds.  The SqlCommand object I am using to call the stored proc times out when I call from my C# webservice.  I have up'd the CommandTimeout to 120 seconds but get the same result....

SqlCommand cmd = new SqlCommand(procName, conn) {CommandType = CommandType.StoredProcedure, CommandTimeout = 120};
SqlDataAdapter sda = new SqlDataAdapter(cmd);

Open in new window


How do I go about determining the bottleneck?  

Again, this proc will execute to completion in SSMS in 12 seconds.

Thanks,
Bruce
0
Comment
Question by:Bruce
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 21

Assisted Solution

by:Craig Wagner
Craig Wagner earned 500 total points
ID: 39954160
First thing I would do is fire up SQL Server Profiler and make sure that what you think your code is sending to the database is actually what your code is sending to the database.
0
 
LVL 40

Accepted Solution

by:
lcohan earned 1500 total points
ID: 39954165
"Again, this proc will execute to completion in SSMS in 12 seconds."
How much data it returns? could this be the issue?


"How do I go about determining the bottleneck?  "
I suggest you use SQL Profiler to trace any call to that SQL Sproc.

http://msdn.microsoft.com/en-us/library/ff650699.aspx
0
 
LVL 1

Author Comment

by:Bruce
ID: 39954192
It returns just two rows of 12 columns of data.  Small about really...
0
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 
LVL 1

Author Comment

by:Bruce
ID: 39954195
Why wouldn't a 2 minute command timeout eventually consume a 12 second SQL query?
0
 
LVL 40

Assisted Solution

by:lcohan
lcohan earned 1500 total points
ID: 39954215
"Why wouldn't a 2 minute command timeout eventually consume a 12 second SQL query? "

How can you be 100% sure that the "timeout" IS the actual error and not something else and...Are you sure is running against that exact Server database and doing what is supposed to?


Here - start your UI code and run a sp_who2 in a SQL SSMS query OR check SQL Activity Monitor in SSMS to see that indeed you are running that SP against that SQL Database.

just type the command below in a SQL SSMS query and check its results:

sp_who2;
0
 
LVL 40
ID: 39954241
Do you have more code after what you showed us.

The SqlDataAdapter alone does not execute the command. You need to Fill a DataTable for it to execute the command:

DataTable tbl = New DataTable();
sda.Fill(tbl);
0
 
LVL 1

Author Comment

by:Bruce
ID: 39956152
SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            conn.Close();
            return ds;

Open in new window


Per the mention above from lcohon I have have opened SSMS and did an sp_who2 while the Fill command was called...  I watch the Login that my app uses (unique in this environment) and the CPUTime just keeps counting up to the 240 sec timeout limit I set in the code.

I have tried to implement a SQLDataReader, thinking the Forward Only nature of that reader might reduce the overhead in returning the data.  There should be less than 1KB returned (See attached Clients Stats screenshot)  The Reader also times out.

Thoughts?
Timeout-Exception-CommDetail.PNG
Client-Stats-CommDetail.PNG
0
 
LVL 1

Author Comment

by:Bruce
ID: 39995009
Update: We had a similar issue with another SP being called from our web service app.  The sp would run from within SSMS in a short time, but when called from the service it would hang. (Verified in SQL Analyzer, processes would contiuously run (Task State RUNNING) in "SELECT INTO" command) We found that the web service was passing in an empty string as one of the parameters and it was not being handled well in the sp and that was causing the sp to timeout.
0

Featured Post

Containers & Docker to Create a Powerful Team

Containers are an incredibly powerful technology that can provide you and/or your engineering team with huge productivity gains. Using containers, you can deploy, back up, replicate, and move apps and their dependencies quickly and easily.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
In part one, we reviewed the prerequisites required for installing SQL Server vNext. In this part we will explore how to install Microsoft's SQL Server on Ubuntu 16.04.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question