Форум: "Базы";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизПроблема с ConnectTimeout при работе с ADO Найти похожие ветки
← →
EugeneK (2003-05-14 10:44) [0]Работаю через ADOConnection.
Изначально поставил 30 секунд и все отлично, но сейчас появилась хранимая процедура, работающая минуты три. Увеличил ConnectTimeout до 100, но ровно через 30 секунд после запуска ADOStoredProc.Open вылазит Exception "Timeout expired". ConnectionString у ADOConnection генерю программно. Вставил в генерацию добавление параметра "...;Connect Timeout=100;...". Не помогло. Попробовал после генерации ConnectionString сделать
ADOConnection.ConnectTimeout:=100;
ADOConnection.Open;
как в справке :), но все равно через 30 секунд те же грабли.
Может где-нить на компе сохраняется какая-то настройка? Может где-то в настройке ADO-клиента на компе зашиты эти 30 секунд?
Может где-то глюк в версии MDAC? Ну и если в ДНК у меня глюк, то тоже не стесняйтесь :)
В общем, кто-нить сталкивался и как поборол?
ЗЫ. Конечно могу разбить запрос на мелкие подзапросы, но это крайний вариант, так как сильно замедлит формирование отчета, как мне кажется. В хранимой процедуре вытаскивается список товаров по определенным условиям, а потом для каждого товара выполняется определенный анализ. Так вот можно этот анализ сделать в виде отдельной sp, и вызывать ее для каждого товара перед выводом каждой строки на экран. Но ведь не по людски это :(
С интересом, Кеоваленко Евгений.
← →
АлексейК (2003-05-14 13:06) [1]1. Однако CommandTimeout:=100. Но значение этого ствойства не передается подлюченным через него компонетам.
2. Если используешь для работы компонеты AdoCommand, AdoDataSet,
AdoQuery, AdoTable, AdoStorenProc, то для них CommandTimeout выставляется отдельно. Причем для AdoQuery, AdoTable, AdoStorenProc их можно выставить только програмно переопределив класс компонета.
3. К тому же на MSSQL тоже есть настройка тайаута, по умолчанию она 5 минут.
← →
NAlexey (2003-05-14 13:13) [2]>только програмно переопределив класс компонета.
В D5 - стандартный глюк. Лечится патчем, или вышеуказанным методом.
← →
EugeneK (2003-05-14 17:22) [3]Конечно CommandTimeout, заговорился :)
Однако каким патчем лечится (как называется, чтобы его найти или ссылочка есть)?
После этого патча не надо выставлять отдельно у TStoredProc?
А если без патча, то мне надо что типа (довольно грубо, конечно):
============================
unit unit1;
interface
....
TMySP = class(TStoredProc)
public
CommandTimeout : integer;
end;
Var MySP : TmySP;
implementation
.....
Procedure ....OnCreate(...);
begin
...
MySP:=TmySP.Create(...);
MySP.CommandTimeout:=100;
QuickReport.DataSet:=MySP;
...
end;
======================================
PS. Тут я не силен, поэтому поправьте, плиз, особенно это касается того, как сделать CommandTimeout видимым...
Заранее спасибо.
← →
EugeneK (2003-05-15 10:34) [4]Извиняюсь, но проблема актуальна очень, поэтому все еще надеюсь на помощь...
С надеждой, Коваленко Евгений.
Калининград.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c