Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > клиент-сервер - истекло время ожидания


Автор: denisminb 20.9.2013, 15:17
Добрый день, есть клиентская программа + сервер (ms sql 2008).
На сервере процедуры, которые в зависимости от входных параметров и своей сути выполняют разные вещи.
На клиенте, форма в которой пользователь выбирает даты,метод расчета. При выполнении возникает ошибка "истекло время ожидания до завершения выполнения операции или сервер не отвечает".
Делаю вот что:
Код

StringBuilder errorMessages = new StringBuilder();
                    //checkBox1.Checked = false;
                    checkBox1.Enabled = false;
                    try
                    {
                        string conSQL = @"Data Source=base1;User ID=sa;Password=*****;Initial Catalog=R";
                        SqlConnection con = new SqlConnection(conSQL);
                        SqlCommand sqlcom = new SqlCommand();
                        sqlcom = con.CreateCommand();
                        sqlcom.CommandType = CommandType.StoredProcedure;
                        sqlcom.CommandText = "proc1";
                        sqlcom.Parameters.Clear();
                        SqlParameter d1 = sqlcom.Parameters.Add("@dtn", SqlDbType.Date);
                        SqlParameter d2 = sqlcom.Parameters.Add("@dtx", SqlDbType.Date);
                        d1.Direction = ParameterDirection.Input;
                        d2.Direction = ParameterDirection.Input;
                        d1.Value = dateTimePicker1.Value;
                        d2.Value = dateTimePicker2.Value;
                        con.Open();
                        sqlcom.ExecuteNonQuery();
                        sqlcom.CommandTimeout = 1000000000;
                        sqlcom.Cancel();
                        con.Close();


                        MessageBox.Show("Хранимая процедура расчета текущих отработала без ошибок");
                    }
                    catch (SqlException ex)
                    {
                        for (int i = 0; i < ex.Errors.Count; i++)
                        {
                            errorMessages.Append("Index #" + i + "\n" +
                                "Message: " + ex.Errors[i].Message + "\n" +
                                "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                                "Source: " + ex.Errors[i].Source + "\n" +
                                "Procedure: " + ex.Errors[i].Procedure + "\n");
                        }
                        MessageBox.Show(errorMessages.ToString());
                        
                       
                    }

увеличивал таймаут но ошибка всё равно ловится.
Что я не правильно делаю?


P.S. Запускаю на самом сервере(сервер = моей машине с которой я запускаю прогу C#) выполнение процедуры,отрабатывает на ура.

Автор: jonie 20.9.2013, 15:21
Код

                        sqlcom.ExecuteNonQuery();
                        sqlcom.CommandTimeout = 1000000000;
может местами строчки-таки поменять?)

Автор: denisminb 20.9.2013, 15:42
Цитата(jonie @ 20.9.2013,  15:21)
Код

                        sqlcom.ExecuteNonQuery();
                        sqlcom.CommandTimeout = 1000000000;
может местами строчки-таки поменять?)

Да,точно. Спасибо.
Буду внимательней

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)