Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / не закрывается TADOConnection при использовании application role / 11 сообщений из 11, страница 1 из 1
29.11.2002, 10:08
    #32073819
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
D6,SP1,2
MSSQL2000 без серв.паков, но
та же задача на VB работала => проблема в дельфи

форма. TADOConnection.Open;
set_applicationrole через TADOCommand
....
TADOConnection.Close
//проверка состояния - дельфи считает что закрыто, но ЕМ показывает что нет.

TADOConnection.Open;
//проверка состояния - дельфи считает что открыто, ЕМ - тоже.
set_applicationrole через TADOCommand - естественно ошибка, т.к. соединение осталось прежнее, а для set_applicationrole надо каждый раз новое

вышел из положения, создавая/уничтожая объект TADOConnection при необходимости, но это же не дело.
...
Рейтинг: 0 / 0
29.11.2002, 10:24
    #32073842
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
Это соединение держится в пуле коннектов. По-умолчанию, оно там висит 1 минуту. Чтобы соединение не попадало в пул, надо в строке соединения прописать OLE DB Services=-1; или OLE DB Services=-2; точно не помню, уточни в MSDN
...
Рейтинг: 0 / 0
29.11.2002, 10:42
    #32073853
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
но почему без использования application role при программном закрытии соединения мнения дельфи и ЕМ совпадают?
...
Рейтинг: 0 / 0
29.11.2002, 11:46
    #32073932
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
Потому что имеется как раз документированая бага, связанная с пулом и ролей приложения. Суть её в следующем - при получении коннекшена из пула, все сбрасывается, кроме роли приложения. Поэтому, без использования роли приложения, для тебя весь процесс пуллинга незаметен.
...
Рейтинг: 0 / 0
29.11.2002, 11:56
    #32073950
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
О-о-о!!!

Видимо бага дельфи, т.к. на VB все в порядке.
Но в любом случае - знать такие тонкости - это круто.
...
Рейтинг: 0 / 0
29.11.2002, 12:35
    #32073989
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
2unreger:
слушай, объясни поподробнее, плиз, какие компоненты ставил, как к базе коннектишься, настройки и пр., в общем, все, что делал, чтоб законнектиться через роль приложения...
...
Рейтинг: 0 / 0
29.11.2002, 13:44
    #32074057
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
У меня есть класс TCADORecordset -обертка над TADOStoredProc, есть клас TCADODataCenter в котором в TList указатели на TCADORecordset, т.е. я в любой момент могу пробежаться по рекордсетам и обновить/закрыть и т.д. Формы работают с единственным экземпляром этого класса. Все АДО-компоненты создаются программно. Только _клиентский_ курсор. Изменения только через _хранимые_ _процедуры_. Таблицы никогда не доступны.
Параметры соединения получил, положив на форму ADOConnection, из построителя. Windows Authentication.

У TCADODataCenter есть метод реконнект, который закрывает все рекордсеты, _уничтожает_ объект TADOConnection, тут же его создает и коннектится заново, обновляя необходимые рекордсеты. После предварительного коннекта с минимальными правами происходит (через TADOCommand) запуск прикладной роли
(через TADOStoredProc в конечном итоге).
Более подробно не могу - там модуль больше 600 строк.

Зачем:
Ролей две: юзер и админ. Любой пользователь всегда работает с минимальными правами, которые при необходимости расширяются (если они у него есть) (переключение роли) и после выполнения операций, снова происходит откат к минимальным (реконнект). Это права на доступ к объектам сервера(хранимым процедурам, в основном). Права на совершение операций над объектами предметной области поддерживаются программно, т.к. в большинстве случаев требуется доступ к таблицам на уровне строк.
...
Рейтинг: 0 / 0
29.11.2002, 14:24
    #32074080
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
Благодарствую. Правда, не могу сказать, что сильно помогло... Я хочу понять, как самым простым способом подконнектиться к серваку через роль приложения. У меня там несколько таблиц и хранимая процедура, которые активно юзаются, дык и не знаю, как их правильно законнектить... На данный момент делаю так:
у всех используемых рекордсетов явно указываю ConnectionString к базе (без ADOConnection)
потом ADOCommand 'exec sp_setapprole ...'
потом открываю рекордсеты (по необходимости запускаю ADOStoredProc...)

Будет ли такой коннект считаться коннектом через роль приложения?
Delphi5, MSSQL 2000
...
Рейтинг: 0 / 0
29.11.2002, 14:57
    #32074094
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
Будет :)
если интересует, переключились ли права на прикладную роль, создавай и проверяй Return-параметр для объекта в котором запускаешь sp_setapprole

"у всех используемых рекордсетов явно указываю ConnectionString к базе (без ADOConnection"
только зачем множество соединений с одного клиента?
...
Рейтинг: 0 / 0
29.11.2002, 15:28
    #32074123
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
>>Будет :)
Спасибо, ты меня успокоил! :)

>>только зачем множество соединений с одного клиента?
а что, в данном случае можно таки использовать ADOConnection? А когда же тогда выполнять setapprole, до открытия ADOConnection, так?
...
Рейтинг: 0 / 0
02.12.2002, 09:40
    #32074480
unreger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не закрывается TADOConnection при использовании application role
см. начало ветки
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / не закрывается TADOConnection при использовании application role / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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