powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как прервать длительный запрос
6 сообщений из 6, страница 1 из 1
Как прервать длительный запрос
    #32000489
Виталик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.

Такой вопрос :
Стоит сервер MSSQL 7.0, клиент написан на Delphi5
Если клиент выполняет длительный запрос, не могу показать пользователю
индикатор выполнения запроса, или хотябы дать ему возможность прервать этот затянувшийся
запрос.
Буду благодарен всем, кто может подсказать, как решить данную проблему, или
Хотя бы подскажет, как ее обойти.

С уважением Виталий.
e-mail: drVik@mail.ru
...
Рейтинг: 0 / 0
Как прервать длительный запрос
    #32000490
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно использовать асинхронное или пакетное выполнение запроса.
Если такой возможности нет или не знаешь, то можно поступить так:
Заранее создать таблицу очередь запросов и таблицу результатов запроса.
Для связи запроса и ответа необходимо в этих таблицах предусмотреть специальное поле.

Выполнение запроса разделить на три чести:
1. Клиент помещает текст запроса в очередь запросов и переходит в режим ожидания (см. пункт 3)
2. Сервер периодически опрашивает очередь. Если в очереди есть текст запроса, то сервер удаляет этот запрос из очереди, выполняет и помещает результат в таблицу результатов.
3. Клиент периодически опрашивает таблицу результатов, и если результат есть, то забирает его и удаляет результат из таблицы результатов.
...
Рейтинг: 0 / 0
Как прервать длительный запрос
    #32000491
Oleg+F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте поэкспериментировать с потоками (класс TThread в Delphi). Иными словами, можно попытаться пустить запрос на выполнение в отдельном потоке программы и в случае большой задержки уничтожить этот поток. Правда скажу честно, что сам этого делать не пробовал. Но видел похожие примеры в каких-то книжках по Delphi (правда не помню в каких).
...
Рейтинг: 0 / 0
Как прервать длительный запрос
    #32000505
Виталик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понял, как все же прервать запрос, но попробую..
Спасибо за советы.
Виталик.
...
Рейтинг: 0 / 0
Как прервать длительный запрос
    #32000975
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы используете DB-LIBRARY, то Вы можете использовать dbcancel или dbcanquery (если Вы знаете указатель PDBPROCESS). Для ODBC Вы можете использовать SQLFreeStmt. (Подробности в BO)
...
Рейтинг: 0 / 0
Как прервать длительный запрос
    #32001020
Фотография AndyMandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однозначно!
Прервать запрос как и получить состяние запроса можно используя DB-Library, прерываение как в предыдущем послании, а состояние с помощью callback-функций, к сожалению нет SQL-book под рукой, но по моему dbresults.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как прервать длительный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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