基于Unix的服务器上的MSDTC和COM +与Oracle数据库出错

时间:2015-03-31 15:48:14

标签: unix odp.net com+ msdtc

当带有所需事务的COM +对象尝试与Oracle数据库通信时,我收到以下错误。

“以下是错误文字......

与基础事务管理器的通信失败。 内在例外: 由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙且MSDTC进程没有例外,两台计算机无法通过其NetBIOS名称找到对方,或者两个事务管理器之一未启用对网络事务的支持。 (HRESULT异常:0x8004D02B) “

<Transaction(TransactionOption.Required)>

相同的代码适用于某些机器,而不适用于其他机器。

尝试过防火墙(根据谷歌搜索结果)。没有防火墙 尝试删除和添加COM +组件。 试过注册表清洁工......

欢迎任何意见。

由于

2 个答案:

答案 0 :(得分:1)

我确认已启用网络DTC访问:

enter image description here

答案 1 :(得分:0)

找到问题的根本原因。

这与在调用堆栈中进行外部数据库访问(到sql server)并且SQL Server阻止MDTC端口号这一事实有关。它现在已经修好了。

编辑:

当我说它被修复时,事实证明它不是。

实际上问题是默认情况下连接正在MSDTC中登记。要禁用此功能,只需添加enlist = false;在连接字符串中,它将自动停止登记到MSDTC的连接。