На VB6 написана ActiveX dll и работает под управлением COM+. В ней идет подключение к SQL server 2000. Есть метод SomeMethod класса SomeClass, в котором идет работа с БД. Коннект к БД открывается в конструкторе объекта SomeClass. Если один клиент запрашивает метод SomeMethod класса SomeClass и выполняет его и в это же время другой клиент просто создает экземпляр класса SomeClass, то первый клиент отваливается с сообщением Invalid argument or procedure call. В чем причина?
Здравствуйте 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 клиентам
Здравствуйте Tom, Вы писали:
Tom>Возможно, что при работе метода SomeMethod происходит ексепшн при работе с базой, так как другой клиент что то там то же с ней делает. Пади прикола поставь On Error ... и запись в лог с Err.Description.
Tom>ЗЫ: Если хочешь более подробно давай детали...
На самом деле для класса этого компонента была установлена обязательная транзакция. И в рамках контекста шла транзакция, подключение к БД, запись в БД. И, наверно, другой клиент ничего не мог сделать, т.к. первая транзакция блокировала все ресурсы.