![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 сек задано насмерть, т.к. эти компоненты существуют лишь для облегчения перехода с предыдущих версий движков БД дельфи.