Вот фрагмент кода, который плохо:времени ADO.NET из при попытке запустить хранимую процедуру
string storedProcedure = "sp3111Commissions";
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand()) {
string ConnectionString = CMSLayers.DataLayer.Universal.GetConnectionString();
ConnectionString =
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection()) {
//Response.Write(EndDate2.ToString());
//Response.End();
conn.ConnectionString = ConnectionString;
//Response.Write(ConnectionString); Response.End(); return null;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.CommandText = storedProcedure;
cmd.Parameters.Add("@ShopID", System.Data.SqlDbType.Int);
cmd.Parameters["@ShopID"].Value = ShopID;
cmd.Parameters.Add("@StartDate", System.Data.SqlDbType.DateTime);
cmd.Parameters["@StartDate"].Value = StartDate;
cmd.Parameters.Add("@EndDate", System.Data.SqlDbType.DateTime);
cmd.Parameters["@EndDate"].Value = EndDate;
cmd.Parameters.Add("@StartDate2", System.Data.SqlDbType.DateTime);
cmd.Parameters["@StartDate2"].Value = StartDate2;
cmd.Parameters.Add("@EndDate2", System.Data.SqlDbType.DateTime);
cmd.Parameters["@EndDate2"].Value = EndDate2;
cmd.CommandTimeout = 1380;
try
{
System.Data.DataSet ds;
using (System.Data.SqlClient.SqlDataAdapter da= new System.Data.SqlClient.SqlDataAdapter()) {
System.Data.DataTable Table = null;
conn.Open();
da.SelectCommand = cmd;
using (ds = new System.Data.DataSet()) {
da.Fill(ds);
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
Table = ds.Tables[0];
}
}
conn.Close();
return Table;
}
}
}
catch (Exception ex)
{
throw ex;
}
}
}
То, что происходит это висит в течение 2 минут, а затем, наконец, получить тайм-аут ошибки. Однако, если я запустил хранимую процедуру в SQL Server Management Studio с такими же точными параметрами, данные возвращаются буквально мгновенно.
«Висеть» происходит на «da.Fill (ds)»; линия. У кого-нибудь есть идеи? Это .NET 2.0, кстати
Что такое ** внутри ** эта хранимая процедура? –
Вы пытались заменить хранимую процедуру чем-то тривиальным, который, как вы знаете, будет обрабатываться очень быстро? Если это помогает, вы знаете, что это хранимая процедура. Если это не поможет, вы знаете, что это ваш клиентский код. – catfood
Можете ли вы включить строку соединения (без каких-либо паролей и других конфиденциальных данных, конечно)? –