Ошибка MSDTC и COM+ с базой данных Oracle на сервере на базе Unix

Я получаю следующую ошибку, когда объект COM+ с требуемой транзакцией пытается связаться с базой данных Oracle.

"Следующий текст ошибки….

Связь с базовым диспетчером транзакций не удалась. Внутреннее исключение: диспетчеру транзакций MSDTC не удалось извлечь транзакцию из исходного диспетчера транзакций из-за проблем со связью. Возможные причины: присутствует брандмауэр, и у него нет исключения для процесса MSDTC, две машины не могут найти друг друга по именам NetBIOS, или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B) "

<Transaction(TransactionOption.Required)>

Один и тот же код работает на некоторых машинах, а не на других.

Попробовали брандмауэр (согласно результатам поиска Google). Брандмауэра нет Пробовали удалять и добавлять компоненты COM+. Пробовал чистить реестр...

Любые материалы приветствуются.

Спасибо


person daehaai    schedule 31.03.2015    source источник


Ответы (2)


Я бы подтвердил, что доступ к сети DTC включен:

введите здесь описание изображения

person b_levitt    schedule 01.04.2015

Нашел корень проблемы.

Это было связано с тем, что в стеке вызовов осуществлялся доступ к внешней базе данных (к sql-серверу), а SQL-сервер блокировал номер порта MDTC. Теперь это исправлено.

РЕДАКТИРОВАТЬ:

Когда я сказал, что это было исправлено, оказалось, что это не так.

На самом деле проблема заключалась в том, что соединение по умолчанию зачислялось в MSDTC. Чтобы отключить это, просто добавьте enlist=false; в строке подключения, и он автоматически прекратит подключение к MSDTC.

person daehaai    schedule 27.04.2015