Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с timeout при работе через ADO-компоненты с MS SQL / 10 сообщений из 10, страница 1 из 1
31.10.2002, 20:06
    #32063790
Oleg F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Проблема такая. Через BDE хранимые процедуры, которые работают по 10-15 минут вызываются нормально.
Через ADO-компоненты они через несколько минут вылетают по таймауту. Причём все мои попытки найти параметр, влияющий на это, не увенчались успехом.
Вто что я нашёл :
1) Свойство CommandTimeout у компонента ADOConnect
2) Аналогичное свойство у компонента AdoCommand
3) У компонента AdoStoredProc такого свойства вообще нет.

Вобщем, те свойства, которые я нашёл, увеличивал до 2000 секунд и больше - без толку. Всё равно минут через пять- семь вылетает по таймауту и всё. Кто знает, в каких недрах зарыт нужный параметр ?
...
Рейтинг: 0 / 0
01.11.2002, 07:48
    #32063830
leo
leo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Возможно поможет настройка самого SQL Server-a
В MS SQL 2000 есть такая настройка Query-timeout
по умолчанию она 600 сек.
...
Рейтинг: 0 / 0
01.11.2002, 08:41
    #32063835
Vitali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Если через BDE работало, то скорее всего SQL не причем.
В Delphi help DevGuide: Developing database applications найдено: Управления timeouts.
Два типа :ConnectionTimeout - TADOConnection для выставления времени ожидания подключения и
CommandTimeOut - для выставления времени в секундах выполнения TADOConnection.Execute

Все остальное (TADOCommand, TADOQuery,TAdoStoredProc и т.д.) имеют только CommandTimeOut (не считая ссылки на Connection)
...
Рейтинг: 0 / 0
01.11.2002, 15:46
    #32064146
AlexB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
В компоненте TADOConnection параметр CommandTimeout не работает. На форуме об этом уже писАли не раз, и пришли к выводу, что компонент глючит. То же самое и у TADOStoredРroc и TADOQuery. Что бы обойти проблему надо использовать TADODataSet. У него CommandTimeout работает нормально.
...
Рейтинг: 0 / 0
01.11.2002, 17:44
    #32064190
Oleg F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Похоже что у TADOConnection свойство CommandTimeout всё-таки работает. Я проверил, отрубается равно через CommandTimeout секунд.
Моя проблема решена с помощью двух операторов :

ADOConnection.CommandTimeout := 1200
ADOConnection.Execute('execute MyProc');


Но мне всё равно непонятно, почему хранимые процедуры (не возвращающие набор данных), которые через MS Query Analyzer и BDE выполняются менее чем за 10 минут, через ADOConnection выполняются более чем за 40 минут.
Откуда такой тормоз ?
...
Рейтинг: 0 / 0
04.11.2002, 11:23
    #32064455
kva
kva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Перечислите, пжалста, весь список ваших значений свойств ADOConnection.
...
Рейтинг: 0 / 0
04.11.2002, 19:43
    #32064722
Oleg F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
Вот как выглядит мой AdoConnection в DFM-файле :

object ADOConnect: TADOConnection
CommandTimeout = 2400
ConnectionTimeout = 180
CursorLocation = clUseServer
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 56
Top = 32
end
...
Рейтинг: 0 / 0
05.11.2002, 09:34
    #32064796
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
А вот серверный курсор напрасненько используется. Вполне может быть, что это из-за него глючит.
...
Рейтинг: 0 / 0
12.11.2002, 19:15
    #32067145
the_joric
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
у TADOQuery, TADOStoredProcedure и TADOTable это свойство не опубликовано. Там используется значение по умолчанию 30 сек. Посему нужно использовать TADODataSet и TADOCommand. Они обеспечивают всю необходимую функциональность.
...
Рейтинг: 0 / 0
14.11.2002, 09:33
    #32067781
OVK
OVK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с timeout при работе через ADO-компоненты с MS SQL
TADOQuery потомок TCustomADODataSet у которого есть свойство CommandTimeout
(но оно скрытое). У TADOConnection тоже есть свойство CommandTimeout, но на
TADOQuery оно не влияет.
Чтобы избавиться от "Timeout expired" я сделал так:
1. Описал класс, в котором опубликовал свойство CommandTimeout
TMyADODataSet = class(TCustomADODataSet)
public
property CommandTimeout;
end;
2. Присвоил новое значение свойству CommandTimeout компанентов TADOQuery
(по умолчанию оно равно 30)
TMyADODataSet (ADOQuery1).CommandTimeout := 60;

3. Вот собственно и все (ну можно еще заняться оптимизацией запросов)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с timeout при работе через ADO-компоненты с MS SQL / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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