Увеличение времени ожидания команды для команды 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 считается нормальной. Что-то большее, чем это, считается плохим подходом,и это обычно приводит к неправильному выполнению. Сейчас мир работает на миллисекундном подходе.