Увеличение времени ожидания команды для команды SQL
У меня небольшая проблема и надеюсь, что кто-то может дать мне совет. Я запускаю команду SQL, но, похоже, эта команда занимает около 2 минут, чтобы вернуть данные, поскольку есть много данных. Но время соединения по умолчанию составляет 30 секунд, как его увеличить и применить к этой команде?
public static DataTable runtotals(string AssetNumberV, string AssetNumber1V)
{
DataTable dtGetruntotals;
try
{
dtGetruntotals = new DataTable("Getruntotals");
//SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6);
//AssetNumber.Value = AssetNumberV;
SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 10);
AssetNumber.Value = AssetNumberV;
SqlParameter AssetNumber1 = new SqlParameter("@AssetNumber1", SqlDbType.VarChar, 10);
AssetNumber1.Value = AssetNumber1V;
SqlCommand scGetruntotals = new SqlCommand("EXEC spRunTotals @AssetNumber,@AssetNumber1 ", DataAccess.AssetConnection);
// scGetruntotals.Parameters.Add(AssetNumber);
scGetruntotals.Parameters.Add(AssetNumber);
scGetruntotals.Parameters.Add(AssetNumber1);
SqlDataAdapter sdaGetruntotals = new SqlDataAdapter();
sdaGetruntotals.SelectCommand = scGetruntotals;
sdaGetruntotals.Fill(dtGetruntotals);
return dtGetruntotals;
}
catch (Exception ex)
{
MessageBox.Show("Error Retriving totals Details: Processed with this error:" + ex.Message);
return null;
}
}
4 ответов
эта команда занимает около 2 минут, чтобы вернуть данные, так как есть много данных
Плохой Дизайн. Рассмотрим использование подкачки.
время соединения по умолчанию составляет 30 секунд, как увеличить это
поскольку вы столкнулись с timout по вашей команде, поэтому вам нужно увеличить timout вашего команда sql. Вы можете указать его в команду
// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;
добавить ожидания SqlCommand
. Обратите внимание, что время в секунде.
// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
поскольку для ответа требуется 2 минуты, вы можете увеличить время ожидания до 3 минут, добавив приведенный ниже код
scGetruntotals.CommandTimeout = 180;
Примечание значение параметра указывается в секундах.
установка CommandTimeout в 120 не рекомендуется. Попробуйте использовать разбиение на страницы, как указано выше. Установка CommandTimeout в 30 считается нормальной. Что-то большее, чем это, считается плохим подходом,и это обычно приводит к неправильному выполнению. Сейчас мир работает на миллисекундном подходе.