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

Вобщем, те свойства, которые я нашёл, увеличивал до 2000 секунд и больше - без толку. Всё равно минут через пять- семь вылетает по таймауту и всё. Кто знает, в каких недрах зарыт нужный параметр ?
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32063862
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твои беды от того, что ты не следуешь настоятельным рекомендациям от производителя Delphi. Надо использовать TAdoDataSet вместо TAdoQuery и TAdoStoredProc. В TAdoDataSet свойство установки таймаута имеется. TAdoQuery и TAdoStoredProc служат только как временное решение для облегчения перехода от BDE к ADO. Но и там тоже есть свойство таймаута, только оно protected, и для использования его надо вытащить в public.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064093
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё это замечательно, да вот только через TADODataSet невозможно вызвать хранимую процедуру командой execute, которая к тому же не возвращает набор данных.
Ниже я привожу цитату из help-а Delphi на TADODataSet (в которой, кстати, даётся рекомендация использовать "TADOCommand or TADOQuery")
Что касается свойства CommandTimeout в TAdoCommand, то оно не protected, а published. Иначе бы я не смог его менять с помощью Object Inspector.

Use the TADODataSet component's CommandText property to retrieve the dataset, specifying either a table name or an SQL statement (SELECT only). TADODataSet is not capable of issuing Data Manipulation Language (DML) SQL statements that do not return result sets (like DELETE, INSERT, and UPDATE). For this use a component like TADOCommand or TADOQuery.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064101
AISOFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо создать наследника от TADOQuery и обеспечить возможность установки CommandTimeout.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064108
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё это замечательно, да вот только через TADODataSet невозможно вызвать хранимую процедуру командой execute, которая к тому же не возвращает набор данных.

Для таких запросов необходимо конечно использовать TAdoCommand

Что касается свойства CommandTimeout в TAdoCommand, то оно не protected, а published. Иначе бы я не смог его менять с помощью Object Inspector.

Я знаю. Только речь шла об TAdoStoredProc и TAdoQurey. Если с TAdoCommand проблем нет и ты его используешь, то в чем тогда вообще проблема?
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064113
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы вызываете хранимую процедуру командой execute, и она не возвращает наборов данных - то пользуйтесь AdoConnection.Execute, установив прежде AdoConnection.CommandTimeout. Я, помниться, тоже мучался с таймаутами в AdoCommand.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064116
AISOFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если используется Delphi5, то CommandTimeout, для TADOQuery и т. д., не изменяется, это глюк. Для полного понимания проблемы, лучше всего посмотреть исходники.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064117
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще бывают на свете таймауты блокировок и таймауты сокетов. Какой в данном случае таймаут исчерпался?
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064196
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если с TAdoCommand проблем нет и ты его используешь, то в чем тогда вообще проблема?
Как раз с TAdoCommand и проблема. Ему CommandTimeout по барабану, он его игнорирует и прерывает выполнение запроса через одному ему известное количество секунд.

Но я решил свою проблему через AdoConnection. Экспериментальным путём выяснил, что в нём CommandTimeout работает! Поэтому использовал два оператора

AdoConnection.CommandTimeOut := 1200;
AdoConnection.Execute('execute MyProc');


Хотя лично мне выполнение хранимых процедур через компонент AdoConnection не очень нравится.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064197
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё добавлю, что мне совершенно не ясно, почему вызов хранимой процедуры через ADO-компоненты Delphi выполняется в несколько раз медленнее, чем вызов той же самой процедуры чрез BDE или MS Query Analyzer.
Может это из-за того, что в Delphi 5 какие-то глюки в реализации ADO-доступа к БД ? Надеюсь, если я перейду на Delphi 6, то они исчезнут.
...
Рейтинг: 0 / 0
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
    #32064454
fe-bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Delphi 6 можно настраивать timeout для ADOCommand а вот в 5 приходилось засовывать долгоирающую процедуру в ADOQuery.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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