当带有所需事务的COM +对象尝试与Oracle数据库通信时,我收到以下错误。
“以下是错误文字......
与基础事务管理器的通信失败。 内在例外: 由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙且MSDTC进程没有例外,两台计算机无法通过其NetBIOS名称找到对方,或者两个事务管理器之一未启用对网络事务的支持。 (HRESULT异常:0x8004D02B) “
<Transaction(TransactionOption.Required)>
相同的代码适用于某些机器,而不适用于其他机器。
尝试过防火墙(根据谷歌搜索结果)。没有防火墙 尝试删除和添加COM +组件。 试过注册表清洁工......
欢迎任何意见。
由于
答案 0 :(得分:1)
我确认已启用网络DTC访问:
答案 1 :(得分:0)
找到问题的根本原因。
这与在调用堆栈中进行外部数据库访问(到sql server)并且SQL Server阻止MDTC端口号这一事实有关。它现在已经修好了。
编辑:
当我说它被修复时,事实证明它不是。
实际上问题是默认情况下连接正在MSDTC中登记。要禁用此功能,只需添加enlist = false;在连接字符串中,它将自动停止登记到MSDTC的连接。