COM+ на VB6 - невозможно работать 2 клиентам
От: AlexeyS  
Дата: 10.10.02 10:44
Оценка:
На VB6 написана ActiveX dll и работает под управлением COM+. В ней идет подключение к SQL server 2000. Есть метод SomeMethod класса SomeClass, в котором идет работа с БД. Коннект к БД открывается в конструкторе объекта SomeClass. Если один клиент запрашивает метод SomeMethod класса SomeClass и выполняет его и в это же время другой клиент просто создает экземпляр класса SomeClass, то первый клиент отваливается с сообщением Invalid argument or procedure call. В чем причина?
Re: COM+ на VB6 - невозможно работать 2 клиентам
От: Tom Россия http://www.RSDN.ru
Дата: 10.10.02 16:01
Оценка:
Здравствуйте AlexeyS, Вы писали:

AS>На VB6 написана ActiveX dll и работает под управлением COM+. В ней идет подключение к SQL server 2000. Есть метод SomeMethod класса SomeClass, в котором идет работа с БД. Коннект к БД открывается в конструкторе объекта SomeClass. Если один клиент запрашивает метод SomeMethod класса SomeClass и выполняет его и в это же время другой клиент просто создает экземпляр класса SomeClass, то первый клиент отваливается с сообщением Invalid argument or procedure call. В чем причина?


Возможно, что при работе метода SomeMethod происходит ексепшн при работе с базой, так как другой клиент что то там то же с ней делает. Пади прикола поставь On Error ... и запись в лог с Err.Description.

ЗЫ: Если хочешь более подробно давай детали...
Народная мудрось
всем все никому ничего(с).
Re[2]: COM+ на VB6 - невозможно работать 2 клиентам
От: AlexeyS  
Дата: 11.10.02 05:58
Оценка:
Здравствуйте Tom, Вы писали:

Tom>Возможно, что при работе метода SomeMethod происходит ексепшн при работе с базой, так как другой клиент что то там то же с ней делает. Пади прикола поставь On Error ... и запись в лог с Err.Description.


Tom>ЗЫ: Если хочешь более подробно давай детали...


На самом деле для класса этого компонента была установлена обязательная транзакция. И в рамках контекста шла транзакция, подключение к БД, запись в БД. И, наверно, другой клиент ничего не мог сделать, т.к. первая транзакция блокировала все ресурсы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.