Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Управление исполнением запросов / 4 сообщений из 4, страница 1 из 1
30.03.2009, 21:21
    #35901564
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление исполнением запросов
.Здравствуйте.

Есть такая ситуация.
Приложение получает доступ к БД при помощи ActiveX.
Некоторый поток приложения присоединился к БД и начал выполнять запрос. Выполнение затянулось на минуты.

Можно ли каким-либо образом искусственно прервать исполнение запроса (естественно, извне данного потока, поскольку он застрял на выполнении вызова Execute или первого Next)?
Достаточно ли для этого прибить поток? Можно ли это сделать не прибивая поток?
Можно ли каким-либо образом раздавать приоритеты на выполнение запросов сервером Cache?
Есть ли в Cache средство для асинхронного выполнения запросов (запустить запрос, а потом получить результат в CALLBACK функции)?

Если это невозможно для ActiveX, есть ли такой функционал у других методов доступа к БД Cache?
...
Рейтинг: 0 / 0
31.03.2009, 08:32
    #35901967
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление исполнением запросов
Hisbreht Victor.Здравствуйте.

Есть такая ситуация.
Приложение получает доступ к БД при помощи ActiveX.
Некоторый поток приложения присоединился к БД и начал выполнять запрос. Выполнение затянулось на минуты.

Можно ли каким-либо образом искусственно прервать исполнение запроса (естественно, извне данного потока, поскольку он застрял на выполнении вызова Execute или первого Next)?
Достаточно ли для этого прибить поток? Можно ли это сделать не прибивая поток?
Можно ли каким-либо образом раздавать приоритеты на выполнение запросов сервером Cache?
Есть ли в Cache средство для асинхронного выполнения запросов (запустить запрос, а потом получить результат в CALLBACK функции)?

Если это невозможно для ActiveX, есть ли такой функционал у других методов доступа к БД Cache?

Поток можно убить через System Manager Portal. Этого будет достаточно чтоб выполнение остановилось, но вы убьете и само подключение к БД. (Подключайтесь без ActiveX, чтоб можно было управлять запросами по отдельности, через ODBC/JDBC)
Раздавать приоритеты на конкретные запросы вряд ли получится, т.к. приоритеты устанавливаются на процесс.
CallBack в Cache' есть. http://karataev.nm.ru/cache/setoutput.html
...
Рейтинг: 0 / 0
31.03.2009, 21:52
    #35904459
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление исполнением запросов
=Dimon=Поток можно убить через System Manager Portal. Этого будет достаточно чтоб выполнение остановилось, но вы убьете и само подключение к БД.Черт с ним, с подключением. Оно у потока свое собственное.
А можно ли это сделать не через портал. а программно?

Кроме того, если рассмотреть проблему со стороны приложения. Имеем thread приложения, который сам присоединился к БД, создав собственный Factory. Если прибить этот thread, то как себя поведет связанный с ним запрос и как поведет себя Factory?

=Dimon= (Подключайтесь без ActiveX, чтоб можно было управлять запросами по отдельности, через ODBC/JDBC)Прелесть ActiveX в том, что там не надо особенным образом регистрировать источник данных. Достаточно знать сетевое имя машины с БД и передать соответствующим образом сформированную строку объекту.

Если бы найти простой способ зарегистрировать БД в ODBC из программы, чтобы это гарантированно ничего не сломало на предмет других БД (в том числе управляемых другими СУБД).
...
Рейтинг: 0 / 0
02.04.2009, 14:11
    #35908352
Turk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Управление исполнением запросов
Hisbreht VictorКроме того, если рассмотреть проблему со стороны приложения. Имеем thread приложения, который сам присоединился к БД, создав собственный Factory. Если прибить этот thread, то как себя поведет связанный с ним запрос и как поведет себя Factory?
Запрос выполняется в отдельном процессе Cache, поэтому завершение/прерывание потока пользовательского приложения никак не повлияет на него. Объект Factory будет существовать до тех пор, пока не завершено приложение (в большинстве случаев, хотя можно задать режим работы с OLE-объектами, при котором они будут привязаны к потокам - см. WinAPI-функцию CoInitializeEx).

Hisbreht VictorЕсли бы найти простой способ зарегистрировать БД в ODBC из программы, чтобы это гарантированно ничего не сломало на предмет других БД (в том числе управляемых другими СУБД).
В ODBC WinAPI есть функция SQLDriverConnect, которая позволяет (в частном случае) подключаться к базам без заведения ODBC-источника. Правда я не уверен, что ODBC-драйвер Cache поддерживает такой способ работы с базой.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Управление исполнением запросов / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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