Проблема при работе с СОМ из T-SQL
От: Letargis  
Дата: 13.09.05 10:02
Оценка:
Суть проблемы такова:
У меня есть out-of-process OLE компонент (назовём его EXE1), который установлен на той же машине, что и MSSQL Server. Я запускаю EXE1 (у него есть и графический интерфейс) и пробую подключится к нему локально клиентским приложением — например, вызывая CoCreateInstance. Работает всё следующим образом — создаётся новый ко-класс, но в уже запущенном процессе EXE1. Это мне и нужно, т.к. я использую из ко-класса глобальные переменные компоненты.
Но, при использовании хранимой процедуры sp_OACreate, происходит такая штука — SQL-сервер стартует новый инстанс процесса EXE1, несмотря на то, что один уже существует. Понятно, что он совсем новый, не инициализированный и нифига уже не работает.
Подскажите, можно ли какими-то настройками заставить SQL подключаться к уже существующему процессу? Либо иначе построить ЕХЕ-компоненту? Может какие-то ещё соображения на эту тему будут?
Re: Проблема при работе с СОМ из T-SQL
От: Tom Россия http://www.RSDN.ru
Дата: 13.09.05 10:25
Оценка:
L>Либо иначе построить ЕХЕ-компоненту? Может какие-то ещё соображения на эту тему будут?
читать про Security Blanket Negotiation
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[2]: Проблема при работе с СОМ из T-SQL
От: Letargis  
Дата: 14.09.05 07:52
Оценка: 6 (1)
Спасибо, в принципе, действительно стоило искать в направлении Security.

Оказывается по умолчанию для local server'a такая переменная как Application Identity ставится в launching user. Это значит, что каждый аккаунт использует свой инстанс сервера — а получается, что мой OLE-сервер работает под залогиненным пользователем, а SQL server — под SYSTEM аккаунтом. Если её поставить в interacting user, то все аккаунты будут использовать инстанс сервера, запущенного под залогиненным пользователем. Изменить её можно через HKEY_CLASSES_ROOT\AppID\{идентификатор сервера}\RunAs, либо в утилитке dcomcnfg найти свой сервер и на вкладке Identity выставить interacting user.

Тема закрыта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.