У меня есть запрос, который истекает при запуске из приложения Windows.Однако он работает нормально, менее чем за 2 секунды, когда я запускаю его непосредственно в SSMS.Все остальные запросы нормально работают в приложении.Я также запустил профилировщик и подтвердил, что приложение действительно выполняет запрос, который я ожидаю (когда я беру код, который показывает профилировщик, был запущен приложением и запускаю его в SSMS, это занимает менее 2 секунд).
Длительные запросы не прерываются в приложении.
Что происходит?
string result = dbHelper.GetTypedDataTable(dtMyProjects, "sp_get_DashboardPMMyProjects", MyUtility.DWConnection, new string[] { "'" + shortNTID + "'" });
static public string GetTypedDataTable(DataTable dt, string sSPName, string connectionName, string[] arrayParameters)
{
if (connectionName == "default")
{
SetUpConnection(sSPName, "sqlConn.ConnectionString", "SP");
}
else
{
SetUpConnection(sSPName, connectionName, "SP");
}
cmdSELECT.CommandText += " " + arrayParameters[0].ToString();
int countParameters = arrayParameters.Length;
for (int i = 1; i < countParameters; i++)
{
cmdSELECT.CommandText += ", " + arrayParameters[i].ToString();
}
return FillDataTable(dt);
}
private static void SetUpConnection(string sSPName, string connectionName, string sqlType)
{
//sqlConn.ConnectionString = ((string)(configurationAppSettings.GetValue("sqlConn.ConnectionString", typeof(string))));
sqlConn.ConnectionString = ((string)(configurationAppSettings.GetValue(connectionName, typeof(string))));
daHlpr.SelectCommand = cmdSELECT;
cmdSELECT.Connection = sqlConn;
if (sqlType == "SP")
{
cmdSELECT.CommandText = "EXEC " + sSPName;
}
else
{
cmdSELECT.CommandText = sSPName;
}
}
private static string FillDataTable(DataTable dt)
{
try
{
daHlpr.SelectCommand.CommandTimeout = 60;
daHlpr.Fill(0, 1000000000, dt);
}
catch (Exception ex)
{
return ex.Message.ToString();
}
return dt.Rows.Count.ToString(); //return the count of rows in the table being returned
}