![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прерывание выполнения запроса [D6, MSSQL]
NAlexey © (2004-07-02 09:03:00)Хотелось бы реализовать нечто подобное как в Query Analyzer, где возможно прервать запрос во время его выполнения. Для этого запускаю запрос в отдельном потоке. Но вот прервать как раз его не получается. Terminate := True; не помогает. Ну это и понятно, решал ли кто такую задачу? Если да, то какой подход необходимо использовать?
Sandman25 (2004-07-02 10:57:00) [21][13] Курдль © (02.07.04 10:49)
Знаете, у нас на старой работе тоже так сначала было, что запросы обкатывались на полупустой базе с каким-нибудь миллионом записей. А через год звонил заказчик и жаловался, что запросы стали притормаживать.
Курдль (2004-07-02 10:49:00) [22]
> Соловьев © (02.07.04 10:38) [11]
> такое ощущение что Вы пишете программы без ошибок, причем
> сразу с ТЗ :)
Дык я пишу программы на практически чистой базе. Это потом она наполняется и тестируется.
А запросы обкатываю средствами СУБД, прежде чем пихать в прогу.
Слабые места БД определяются еще на этапе ТЗ, когда заказчик заявляет, типа: "У нас будет 1000 операций в день". Тогда становится ясно, что НД придется ограничивать по каким-то критериям, прежде, чем передавать на клиента.
NAlexey © (02.07.04 10:35) [9]
>Хм... Предположим я в программу вставляю билдер запросов, хочу сделать механизм применяющийся в Query Analyzer.
Это для "программируемых отчетов", или чего-то типа того?
dimm22 (2004-07-02 10:42:00) [23]
> Конечно это все хорошо, а по существу?
Если хочешь прервать выполнение потока, то Suspend делай ему, негодяю :-)
> >А где Вы видели запрос, который выполняется 30 секунд?
Ну у меня есть несколько. И что?
Соловьев (2004-07-02 10:38:00) [24]
> [8] Курдль © (02.07.04 10:34)
такое ощущение что Вы пишете программы без ошибок, причем сразу с ТЗ :)
Бывает и дольше. Какой-нибудь отчет или поиск может и дольше выполнятся чем 30 сек.
Sandman25 (2004-07-02 10:37:00) [25]>А где Вы видели запрос, который выполняется 30 секунд?
Счастливый человек. Мне приходилось заниматься оптимизацией ХП из 1000+ строк, чтобы она работала 5 минут вместо 15...
NAlexey (2004-07-02 10:35:00) [26]>Курдль © (02.07.04 10:26) [5]
Хм... Предположим я в программу вставляю билдер запросов, хочу сделать механизм применяющийся в Query Analyzer. Я злоупотребляю серверной логикой? По моему озвучил это в самом вопросе.
Конечно это все хорошо, а по существу?
Курдль (2004-07-02 10:34:00) [27]
> so_well (02.07.04 10:32) [6]
> ну если запрос выполняется секунд 30, то, наверное, логично
> дать возможность юзверю прервать его если он передумал его
> запускать
А где Вы видели запрос, который выполняется 30 секунд?
(Я мож чего-то не догоняю... Извините, я никогда не работал с MS SQL).
dimm22 (2004-07-02 10:34:00) [28]Чё то несовсем понял, где должен прерываться запрос. Уже в готовом приложении или при разработке приложения, в том же IbExpert'e например?
> Для этого запускаю запрос в отдельном потоке. Но вот прервать
> как раз его не получается. Terminate := True;
Насчёт прерывания исполнения потока, то тут нужен Suspend.
so_well (2004-07-02 10:32:00) [29]ну если запрос выполняется секунд 30, то, наверное, логично дать возможность юзверю прервать его если он передумал его запускать
Курдль (2004-07-02 10:26:00) [30]Я, конечно, не гений - только учусь... Прошелся по базарчику - спросил еще пятерых разработчиков БД-ориентированных проектов.
Никто не сознался, что была нужда отменить запрос.
Видимо такие проблемы возникают у тех, кто злоупотребляет серверной логикой...
Соловьев (2004-07-02 10:21:00) [31]
> [3] Курдль © (02.07.04 10:18)
значит Вы или гений, или запросы у Вас типа селект из одной таблицы. Всякое бывает когда идет разработка. Нормальная проблема.
В ФБ можно снять запрос с помощью генератора и если этот запрос запускается в виде ХП. Может можно такое сделать и в MS SQL, а может там для этотго конечно есть средства.
Курдль (2004-07-02 10:18:00) [32]
> NAlexey © (02.07.04 10:12) [2]
> А что, ты считашь что это абсурдная задача?
Пытаюсь понять непонятное. За всю мою "практику" ни разу не возникало необходимости прервать запрос.
NAlexey (2004-07-02 10:12:00) [33]>Курдль © (02.07.04 10:06) [1]
А что, ты считашь что это абсурдная задача?
Курдль (2004-07-02 10:06:00) [34]
> решал ли кто такую задачу?
А зачем, позвольте спросить, создавать такой запрос, чтобы потом же его и прерывать???