Время ожидания соединения SQL c# - PullRequest
1 голос
/ 27 марта 2020

У меня есть проект, и когда я пытаюсь его запустить, а тест данных большой, у меня всегда есть тайм-аут соединения. Я добавил " sqlCmd.CommandTimeout = 3600; ", но все еще не работает. Что я могу сделать не так?

Это мой код :

public void createCode(String ce, int ord, String beh, int wkd)
{
        String strSql = "";
        SqlCommand sqlCmd;

        SqlConnection conexion = new SqlConnection(getConexion());

        try
        {
            if (conexion.State != ConnectionState.Open)
                conexion.Open();

            //The insert works fine in sql server
            strSql = "Insert into x with values"; 

            sqlCmd = new SqlCommand(strSql, conexion);
            sqlCmd.CommandTimeout = 3600;
            sqlCmd.ExecuteScalar();
        }
        catch (Exception ex)
        {               
            throw new Exception("Error creating Code. " + ex.Message);
        }
        finally
        {
            if (conexion.State == ConnectionState.Open)
                conexion.Close();
        }

}

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Вам может потребоваться установить тайм-аут транзакции в вашем конфигурационном файле, например, так:

<system.transactions>
   <defaultSettings timeout="01:00:00" />
</system.transactions>
0 голосов
/ 27 марта 2020

sqlCmd.ExecuteScalar () не подходит для вашего скрипта, попробуйте вместо этого использовать sqlCmd.ExecuteNonQuery () и удалите тайм-аут.

        sqlCmd = new SqlCommand(strSql, conexion);
        sqlCmd.ExecuteNonQuery();

Проверьте каждую функцию, ExecuteScalar пытается вернуть первое значение из выбора, в то время как ExecuteNonQuery не получает никакого значения, просто получает количество затронутых строк.

Надеюсь, это поможет!

...