Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не меняется TimeOut при формировании отчета / 8 сообщений из 8, страница 1 из 1
04.09.2019, 13:22
    #39857138
alex_ll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
В приложении WindowsForm формирую отчет. Один из запросов в зависимости от заданного периода, иногда выполняется около минуты (проверял в Mamagement Studio) соответственно формирование отчета прекращается по исключению исключение"Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает" По умолчанию свойство Connection.ConnectionTimeout стояло 15 сек. И таймаут срабатывал правильно. Я указал в строке подключения "Connect Timeout = 600" и Connect Timeout = 0, в обоих случаях в отладчике свойство Connection.ConnectionTimeout равно 600 и 0 соответственно, но отчет после 30 секунд вылетает по тому же самому исключению. Где копать, кроме оптимизации запроса?
...
Рейтинг: 0 / 0
04.09.2019, 13:24
    #39857141
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
connect timeout это на соединение , а не выполнение. нужно искать command timeout
...
Рейтинг: 0 / 0
04.09.2019, 13:28
    #39857146
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
SqlCommand.CommandTimeout Property (System.Data.SqlClient) | Microsoft Docs
Gets or sets the wait time before terminating the attempt to execute a command and generating an error.
Property Value
Int32
The time in seconds to wait for the command to execute. The default is 30 seconds.
Remarks
A value of 0 indicates no limit (an attempt to execute a command will wait indefinitely).
Ну, и для сравнения:
SqlConnection.ConnectionTimeout Property (System.Data.SqlClient) | Microsoft Docs
Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error.
...
Рейтинг: 0 / 0
04.09.2019, 13:30
    #39857150
alex_ll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
Konst_One, искал. У sp_моя_процедураTableAdapter есть только Connection и Connection.ConnectionTimeout, а CommandTimeout нет свойства. Тем более не понятно где его поменять.
...
Рейтинг: 0 / 0
04.09.2019, 13:38
    #39857158
alex_ll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
О нашел свойство моя_Процедура.Adapter.SelectCommand.CommandTimeout = 30, осталось только поменять его. Потому как перед методом Fill оно еще не существует.
...
Рейтинг: 0 / 0
05.09.2019, 10:24
    #39857764
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
alex_llО нашел свойство моя_Процедура.Adapter.SelectCommand.CommandTimeout = 30, осталось только поменять его. Потому как перед методом Fill оно еще не существует.

оно существует со значением по умолчанию
...
Рейтинг: 0 / 0
06.09.2019, 15:00
    #39858467
alex_ll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
В общем, можно сделать как советуют умные люди новый класс на основе существующего и прописать метод меняющий параметр .Adapter.SelectCommand.CommandTimeout.

Но если кому надо срочно, что бы заработало, а потом не спеша сделать правильно, то

переписать
Код: c#
1.
this.ВашАдаптер_TableAdapter.Fill()


на
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try
            {
                this.ВашАдаптер_TableAdapter.Fill();
    
            }
            catch 
            {
                this.ВашАдаптер_TableAdapter.Adapter.SelectCommand.CommandTimeout = 0;
                this.ВашАдаптер_TableAdapter.Fill();
            }



Тут фишка в том, что до вызова метода Fill этот параметр null, а после вызова определен по умолчанию (у меня был 30)
...
Рейтинг: 0 / 0
06.09.2019, 17:10
    #39858553
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не меняется TimeOut при формировании отчета
alex_llТут фишка в том, что до вызова метода Fill этот параметр null, а после вызова определен по умолчанию (у меня был 30)
30 он у всех, см. документацию. А то, что null до вызова Fill - это потому, что до первого вызова Fill у адаптера собственно команды (SqlCommand) нет, она сама равна null.
alex_llВ общем, можно сделать как советуют умные люди новый класс на основе существующего и прописать метод меняющий параметр .Adapter.SelectCommand.CommandTimeout.
Можно заполнять данные как угодно, хоть через даппер в виде коллекций, потом и программно собирать эти данные вместе для привязки к источникам данных отчёта. Кода, в общем-то, совсем немного. Это позволяет вообще отказаться от сгенеренных адаптеров, и полностью управлять процессом загрузки данных - например, сделать её асинхронной. Я сам лично дизайнером датасета, если возникает нужда иметь дело с rdl, пользуюсь только для привязки полей отчета к данным, и всё - адаптеров нет, сами DataTable's некогда не заполняются, потому что отчет получает данные другим способом.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не меняется TimeOut при формировании отчета / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]