Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CommandTimeout в ADO


BoxTer ©   (2003-08-01 09:16:00) 

Доброе время суток.
Столкнулся с такой проблемой, клиентская прога ожидает выполнения процедуры на сервере вызванной командой ExecProc; Расчеты долгие, данных много. Через 30 сек вываливается сообщение "Timeout expired" - с этим понятно, но почему через 30 сек и как мне увеличить значение?
Пробовал в свойствах соединения, в файлике ADODB.pas (и пробовал копировать его в delphi\lib) - ничаво не помогает... Усе равно 30 сек...


KSergey   (2003-08-01 13:08:00) [1]

Это все, конечно, интересно, но вопрос: зачем????? Ну есть же готовые компоненты! Какая разница на что переделывать: на THackAdoDataset или TADODataSet???!


Polevi   (2003-08-01 13:02:00) [2]

ok, решил проблему

type
THackAdoDataset=class(TCustomAdoDataset);

procedure DatasetBeforeOpen(DataSet: TDataSet);
begin
THackAdoDataset(Dataset).Command.CommandObject.CommandTimeout:=666;
end;


Polevi   (2003-08-01 12:36:00) [3]

procedure TCustomADODataSet.OpenCursor(InfoQuery: Boolean);
...
...

явно указал таймаут
Source.CommandTimeout:=120;
ActiveConnection.CommandTimeOut:=120;

Recordset.Open(Source, ActiveConnection,
CursorTypeValues[FCursorType], LockTypeValues[FLockType],
( ExecuteOptions)

procedure TCustomADODataSet.OpenCursor(InfoQuery: Boolean);
...
...

явно указал таймаут
Source.CommandTimeout:=120;
ActiveConnection.CommandTimeOut:=120;

Recordset.Open(Source, ActiveConnection,
CursorTypeValues[FCursorType], LockTypeValues[FLockType],
CommandTypeValues[CommandType] + ExecuteOptionsToOrd(ExecuteOptions));

и получаю Timeout expired через 30 сек

???


sniknik   (2003-08-01 11:25:00) [4]

> какие апдейты
http://se-ed.net/thaidelphicc/xml/updatepack/
посмотри, хотя я только про 6-ку точно знаю. причем ставил поочередно 1 после 2 ... (хотя 2 вроде первый включает), но чегото там "несрасталось".


BoxTer   (2003-08-01 11:15:00) [5]

какие апдейты, у меня стоят: D5EntUpdate, d5adoupdate2 ???


KDS   (2003-08-01 11:08:00) [6]

Блин, а у меня обратная проблема: не знаю как обломать долговыполняющийся запрос к БД через IBObjects


sniknik   (2003-08-01 10:51:00) [7]

проблема сушествовала до 6х дельфей без апдейтов, а в в пятых сам боролся подключая и переписывая ADODB (там менял значения по дефаулту или перед вызовом команды). но проще по моему все апдейты на дельфи поставить, тогда значения таймаута должны будут менятся.


KSergey   (2003-08-01 10:21:00) [8]

Переделать там - 5 минут
Ну и еще 2 часа на состыковку, возможно ;)
Хатя вообще-то это я так, запугиваю
А переделок там действительно немного, а вот 30 сек таймаута вшиты насмерть (посмотрите исходники; возможно выяснится, что я что-то путаю, но на памяти осталась именно такая информация когда смотрел).


BoxTer   (2003-08-01 09:36:00) [9]

а шо железо не изменить?
блин, влом переделывать...


KSergey   (2003-08-01 09:32:00) [10]

BoxTer © (01.08.03 09:16)
Доброе время суток.
Столкнулся с такой проблемой, клиентская прога ожидает выполнения процедуры на сервере вызванной командой ExecProc; Расчеты долгие, данных много. Через 30 сек вываливается сообщение "Timeout expired" - с этим понятно, но почему через 30 сек и как мне увеличить значение?
Пробовал в свойствах соединения, в файлике ADODB.pas (и пробовал копировать его в delphi\lib) - ничаво не помогает... Усе равно 30 сек...


Ой, зачем же так грубо-то поступать? ;)

Все проще. Надо пользовать ADOConnection и ADOCommand, ADODataSet
Эти компоненты покрывают польностью все потребности при соотв. настройках, там же есть настройка таймаутов.
А в ADOQuery и ADOStoredProc (про ADOTable я молчу) 30 сек задано насмерть, т.к. эти компоненты существуют лишь для облегчения перехода с предыдущих версий движков БД дельфи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо