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

Вобщем, те свойства, которые я нашёл, увеличивал до 2000 секунд и больше - без толку. Всё равно минут через пять- семь вылетает по таймауту и всё. Кто знает, в каких недрах зарыт нужный параметр ?
...
Рейтинг: 0 / 0
01.11.2002, 10:07:24
    #32063862
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
Твои беды от того, что ты не следуешь настоятельным рекомендациям от производителя Delphi. Надо использовать TAdoDataSet вместо TAdoQuery и TAdoStoredProc. В TAdoDataSet свойство установки таймаута имеется. TAdoQuery и TAdoStoredProc служат только как временное решение для облегчения перехода от BDE к ADO. Но и там тоже есть свойство таймаута, только оно protected, и для использования его надо вытащить в public.
...
Рейтинг: 0 / 0
01.11.2002, 14:49:47
    #32064093
Oleg F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
Всё это замечательно, да вот только через 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
01.11.2002, 14:54:00
    #32064101
AISOFT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
Надо создать наследника от TADOQuery и обеспечить возможность установки CommandTimeout.
...
Рейтинг: 0 / 0
01.11.2002, 15:04:24
    #32064108
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему хранимые процедуры вылетают по таймауту ? (Delphi --> ADO --> MS SQ
Всё это замечательно, да вот только через TADODataSet невозможно вызвать хранимую процедуру командой execute, которая к тому же не возвращает набор данных.

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

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

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

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

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


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


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