Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Вниз

Отменение выполнения запроса   Найти похожие ветки 

 
DmitryMN   (2004-08-06 19:10) [0]

Как послать на сервер Firebird команду для отмены выполняющегося запроса?


 
GRAND25 ©   (2004-08-06 19:22) [1]

Transaction1.RollbackRetaining;


 
DmitryMN   (2004-08-06 19:26) [2]

спасибо - попробую


 
Val ©   (2004-08-06 19:31) [3]

> [2] DmitryMN   (06.08.04 19:26)
можете не пробовать. роллбэк откатывает изменения(после выполнения запроса), а не прерывает запрос.


 
GRAND25 ©   (2004-08-06 19:37) [4]

Тогда вызывает интерес, в какой же момент нужно прервать выполнение запроса?


 
s999   (2004-08-06 19:46) [5]

Насколько я знаю, в семействе IB это возможно только в IB 6.5-7.1


 
DrPass ©   (2004-08-07 00:58) [6]

Можно просто гронуть соединение


 
DmitryMN   (2004-08-07 00:58) [7]

А как насчет Firebird - в нем можно такое сделать?
И самое главное - как это сделать?


 
GanibalLector ©   (2004-08-07 03:34) [8]

>А как насчет Firebird - в нем можно такое сделать?

А зачем его вообще делать,если запрос будет отменен???Тогда уж лучше вообще запрос не делай.


 
Mike Kouzmine ©   (2004-08-07 16:49) [9]

Можно создать генератор, установить в 0, запустить ХП типа
select
suspend
добавить туда проверку значения генератора и если 1 (выставляет клиент), то выходим.


 
DmitryMN   (2004-08-07 20:42) [10]

Запрос нужен для определения количества строк в таблице и суммы по всем строкам.
На некоторых наборах данных этот запрос может отрабатывать до 5 минут. Если пользователь не захочет так долго ждать - он может отменить запрос. Вот для чего нужна отмена запроса.

To GanibalLector: если запрос выполняется - даже в процедуре - процедура ждет пока он не выполнится и не сможет отменить его в процессе выполнения


 
Johnmen ©   (2004-08-07 21:52) [11]

>этот запрос может отрабатывать до 5 минут

Это ж сколько там записей ?!


 
GanibalLector ©   (2004-08-07 23:13) [12]

>этот запрос может отрабатывать до 5 минут
И что select count(*) from table выполняется пять минут ???


 
DrPass ©   (2004-08-08 00:43) [13]


> >этот запрос может отрабатывать до 5 минут
>
> Это ж сколько там записей ?!

Скорее так:
Это ж сколько там индексов?


 
DmitryMN   (2004-08-08 02:12) [14]

Запрос выглядит как select count(*), sum(summa) from table
записей - 1.5 миллиона, индексов - 10


 
GanibalLector ©   (2004-08-08 02:20) [15]

Ну,тогда выполняй запрос в отдельном потоке.При этом тормоза вообще исчезнут и отменить можно будет в любой момент(убив поток)


 
DmitryMN   (2004-08-08 02:23) [16]

спасибо - буду пробовать


 
Fay ©   (2004-08-08 03:27) [17]

2 DmitryMN   (08.08.04 02:23) [16]
Пробуй, но учти, что каждый работающий с БД поток должен иметь своё соединение (IBDataBase_или_что_там_у_тебя), а просто так брать и убивать потоки - это живодёрство и добром оно не кончится.


 
VID ©   (2004-08-08 12:54) [18]

Fay ©   (08.08.04 03:27) [17]
Насколько я понимаю, если запустить выполнение запроса через доп. поток, но при этом использую IBDataBase, который создан в контексте основного потока, то тормоза останутся неизменными... Так что новое соединение на каждый поток это не рекомендация - это обязательное условие.


 
DrPass ©   (2004-08-08 13:02) [19]


> Запрос выглядит как select count(*), sum(summa) from table
> записей - 1.5 миллиона,

Это немного. А что за компьютер?


 
DmitryMN   (2004-08-08 22:40) [20]

To DrPass:
Дело в том что  программка вроде как локальная, в основном стоит на компах у юзеров, поэтому могут попадаться и слабые машины. Я, например тестирую ее на Celeron 2600/512 RAM/WinXP.


 
Fay ©   (2004-08-09 07:46) [21]

2 VID ©   (08.08.04 12:54) [18]
Либо Вы путаете код потока с данными потока, либо я не понял, что Вы имели ввиду. У меня тормозов не наблюдалось. Кроме соседа за стеной 8).


 
GanibalLector ©   (2004-08-11 01:18) [22]

Кстати,вот только что нашел такую вот информацию
Дает ли Delphi возможность корректно прервать выполнение SQL-запроса (BDE)?
Дает ли Delphi возможность корректно прервать выполнение SQL-запроса к серверу Oracle с помощью BDE? Например, чтобы при использовании с SQL Plus после отправки SQL-запроса на выполнение на экране появлялось окно с кнопкой Cancel, которое давало бы возможность в любой момент прервать выполнение этого запроса?

Насколько мне известно, для этой цели лучше всего использовать функции Oracle Call Interface (низкоуровневый API Oracle). В комплекте поставки Oracle есть соответствующие примеры для C, и переписать их на Pascal несложно.

Некоторые драйверы SQL Link позволяют прекратить выполнение запроса, если время его выполнения превышает заранее заданное значение (параметр MAX QUERY TIME соответствующего драйвера). Однако драйвер ORACLE, к сожалению, в их число не входит.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.033 c
4-1090405878
sashuly
2004-07-21 14:31
2004.09.05
отлов русских букв с OnKeyDown


14-1092343375
pasha_golub
2004-08-13 00:42
2004.09.05
Литература vs Кинематограф


3-1091984810
Shade
2004-08-08 21:06
2004.09.05
Распечатка в строку в FastReports.


1-1092910926
Cosinus
2004-08-19 14:22
2004.09.05
Обход всех секций в INI не зная точного их количества и имен


1-1093086372
masqito
2004-08-21 15:06
2004.09.05
Помогите с построением компонентов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский