Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

Запуск долгой операции через ADO, ошибка «Время ожидания вышло»&#133   Найти похожие ветки 

 
Kolan ©   (2007-12-25 15:42) [0]

Здравствуйте,
 запускаю хрон проц, которая работает долго(несколько минут) через ADO. Не дождавшись результата получаю исключение «Время ожидания вышшло». Видимо где-то есть этот time out, и не его надо изменить&#133 Но как и где?


 
Palladin ©   (2007-12-25 16:07) [1]

ну да... есть... называется CommandTimeout


 
Kolan ©   (2007-12-25 16:26) [2]

> ну да&#133 есть&#133 называется CommandTimeout

Что-то не так млин, с DBE работало&#133:

Сократил код до минимума для отладки:

var
 Query: TADOCommand;
 TempTimeOut: Integer;
begin
 Query := TADOCommand.Create(nil);
 TempTimeOut := DBConnection.CommandTimeout;
 DBConnection.CommandTimeout := 300;
 try
   Query.Connection := DBConnection;
   Query.CommandText := "EXECUTE dbo.FILLECO 1401, ""2006-06-10"", ""2006-07-25"", 0, 0, NULL";
   Query.Execute;
 finally
   Query.Free;
   DBConnection.CommandTimeout := TempTimeOut;
 end;
end;


При запуске получаю саюжевое сообщение.

В Query Analyzer"e это эело выполняестя 60-80 секунд. Куда копать?


 
Kolan ©   (2007-12-25 16:27) [3]


> DBE работало

BDE


 
Правильный_Вася   (2007-12-25 16:40) [4]


>  хрон проц

хроническая?


 
Kolan ©   (2007-12-25 16:42) [5]

> хроническая?

пока только хранимая :)


 
sniknik ©   (2007-12-25 18:11) [6]

в D5, и D6 без апдейтов(SP) c CommandTimeout были проблемы,  новое значение не устанавливалось, приходилось править генофонд.

> это эело выполняестя 60-80 секунд. Куда копать?
откопай, неважно откуда, чтонибудь тяжелое бить того кто это писал...


 
Kolan ©   (2007-12-25 18:14) [7]

> в D5, и D6 без апдейтов(SP) c CommandTimeout были проблемы,
>  новое значение не устанавливалось, приходилось править
> генофонд.

Пользую DBS 2006

Перевожу проект с D7 + DBE на DBS 2006  + ADO


> чтонибудь тяжелое бить того кто это писал&#133

Что это? [2] ? Писал я.

Если имелся ввиду работник Borland, то как обойти тогда? Надо запустить хранимку &#133


 
Anatoly Podgoretsky ©   (2007-12-25 20:10) [8]

DBConnection.CommandTimeout := 300;
Это относится к DBConnection, смотри свойство у TADOCommand
Кроме того надобность в TADOCommand весьма сомнительна, поскольку метод у самого TAdoConnection есть Execute - вот на него и влияет это свойство, а не на TADOCommand


 
sniknik ©   (2007-12-25 21:08) [9]

> Что это? [2] ? Писал я.
не [2], а процедуру выполняющуюся 80с на "чистом MSSQL" (у нас даже 1С-ники считают подобное неприемлимым...)
или у тебя там массовая рассылка писем через MSSQL, с ожиданием подтверждения?


 
Kolan ©   (2007-12-25 21:15) [10]

> или у тебя там массовая рассылка писем через MSSQL, с ожиданием
> подтверждения?

Там жуткая, много экранная много экранная хранимка, которую писал не я. И струдом не то что понял, ели ели отформатировал её&#133 Она собирает данные. И запускаться будет раз в месяц.


> Кроме того надобность в TADOCommand весьма сомнительна

Мне там параметры надо подставлять&#133

Завтра буду пробовать.


 
sniknik ©   (2007-12-25 21:29) [11]

> И запускаться будет раз в месяц.
тогда ее стоит "запускать" не тебе, а серверу MSSQL в job-е. плюс ко всем преимуществам что это дает (не надо ничего делать например), и время ее работы тебя перестанет беспокоить.


 
Kolan ©   (2007-12-25 21:41) [12]

> тогда ее стоит «запускать» не тебе, а серверу MSSQL в job-
> е.

Нет. Надо запускать программой. «Раз в месяц» — это административная штука. Пользователь это делает из программы, но примерно раз в месяц&#133


> и время ее работы тебя перестанет беспокоить

С BDE оно меня и не беспокоило&#133


 
ЮЮ ©   (2007-12-26 12:06) [13]


>  Query := TADOCommand.Create(nil);
>  TempTimeOut := DBConnection.CommandTimeout;
>  DBConnection.CommandTimeout := 300;

почкму бы CommandTimeout не установить у  Query? Ты ведб запрос не через  DBConnection.Exec  выполняешь


 
Kolan ©   (2007-12-26 12:13) [14]

Установил тайм аут у запроса — получилось. Благодарю.

Интересно а в BDE есть такое понятие как тайм аут? И почему он не ругался?


 
Shamansky_ne   (2007-12-26 15:14) [15]

Ты еще поиграй с параметром Prepared должно увеличить скорость обработки


 
sniknik ©   (2007-12-26 16:11) [16]

> Ты еще поиграй с параметром Prepared должно увеличить скорость обработки
вот это врядли...
если бы был множественный вызов одного и того же "легкого по времени" запроса, то еще может быть. в одном, даже не таком "тяжелом" доля времени в "неподготовленном" запросе невелика. и для одного одна подготовка будет всегда, раньше, позже, какая разнице? сумма времен все равно не изменится.

тут бы другое сильно помогло (если бы не странное желание создать компонент в котором запрос выполняется), выполнение в асинхронном режиме с не-ожиданием результата... пусть сервер его бы и "мусолил" 80сек, для клиента время бы стремилось к 0.


 
Kolan ©   (2007-12-26 16:33) [17]

> если бы не странное желание создать компонент в котором
> запрос выполняется

Наследство &#133


 
bvz   (2007-12-28 12:27) [18]

Если результат не важен можеш запустить асинхронный вызов хранимки


 
Ega23 ©   (2007-12-28 12:31) [19]


> Нет. Надо запускать программой. «Раз в месяц» — это административная
> штука. Пользователь это делает из программы, но примерно
> раз в месяц…


А может пользователь раз в месяц стартует джоб, который, в свою очередь, запускает эту хранимку?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
3-1190362308
em240
2007-09-21 12:11
2008.01.27
msmq+mssmq+ отправка сообщения в очередь после срабатывания тригг


11-1182849398
robt
2007-06-26 13:16
2008.01.27
колесо и TrackBar


3-1190408298
Kostafey
2007-09-22 00:58
2008.01.27
Использование таблиц и полей в качестве параметров хранимых про-


2-1199317792
Забывчивый человек
2008-01-03 02:49
2008.01.27
Аналог:=i+1;


2-1198581367
mikola
2007-12-25 14:16
2008.01.27
функция проверки на наличие файла на ftp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский