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

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

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

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


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

object ADOConnect: TADOConnection
CommandTimeout = 2400
ConnectionTimeout = 180
CursorLocation = clUseServer
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 56
Top = 32
end
...
Рейтинг: 0 / 0
Проблема с timeout при работе через ADO-компоненты с MS SQL
    #32064796
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот серверный курсор напрасненько используется. Вполне может быть, что это из-за него глючит.
...
Рейтинг: 0 / 0
Проблема с timeout при работе через ADO-компоненты с MS SQL
    #32067145
the_joric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у TADOQuery, TADOStoredProcedure и TADOTable это свойство не опубликовано. Там используется значение по умолчанию 30 сек. Посему нужно использовать TADODataSet и TADOCommand. Они обеспечивают всю необходимую функциональность.
...
Рейтинг: 0 / 0
Проблема с timeout при работе через ADO-компоненты с MS SQL
    #32067781
OVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OVK
Гость
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
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с timeout при работе через ADO-компоненты с MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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