MSDTC 和 COM+ 与基于 Unix 的服务器上的 Oracle 数据库出错
MSDTC and COM+ with Oracle database on Unix based server error out
当具有所需事务的 COM+ 对象尝试与 Oracle 数据库通信时,出现以下错误。
"以下是错误文本....
与底层事务管理器的通信失败。
内部异常:
由于通信问题,MSDTC 事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙并且它没有 MSDTC 进程的例外,两台机器无法通过它们的 NetBIOS 名称找到对方,或者没有为两个事务管理器之一启用对网络事务的支持。 (HRESULT 异常:0x8004D02B)
"
<Transaction(TransactionOption.Required)>
相同的代码在某些机器上有效,但在其他机器上无效。
已尝试防火墙(根据 google 搜索结果)。没有防火墙
已尝试删除和添加 COM+ 组件。
尝试过注册表清理器...
欢迎任何意见。
谢谢
我会确认网络 DTC 访问已启用:
找到问题的根本原因。
这是因为在调用堆栈中进行了外部数据库访问(对 sql 服务器)并且 SQL 服务器正在阻止 MDTC 端口号。现已修复。
编辑:
当我说它已修复时,事实证明它不是。
事实上,问题在于默认情况下在 MSDTC 中登记了连接。要禁用它,只需添加 enlist=false;在连接字符串中,它将停止自动登记与 MSDTC 的连接。
当具有所需事务的 COM+ 对象尝试与 Oracle 数据库通信时,出现以下错误。
"以下是错误文本....
与底层事务管理器的通信失败。 内部异常: 由于通信问题,MSDTC 事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙并且它没有 MSDTC 进程的例外,两台机器无法通过它们的 NetBIOS 名称找到对方,或者没有为两个事务管理器之一启用对网络事务的支持。 (HRESULT 异常:0x8004D02B) "
<Transaction(TransactionOption.Required)>
相同的代码在某些机器上有效,但在其他机器上无效。
已尝试防火墙(根据 google 搜索结果)。没有防火墙 已尝试删除和添加 COM+ 组件。 尝试过注册表清理器...
欢迎任何意见。
谢谢
我会确认网络 DTC 访问已启用:
找到问题的根本原因。
这是因为在调用堆栈中进行了外部数据库访问(对 sql 服务器)并且 SQL 服务器正在阻止 MDTC 端口号。现已修复。
编辑:
当我说它已修复时,事实证明它不是。
事实上,问题在于默认情况下在 MSDTC 中登记了连接。要禁用它,只需添加 enlist=false;在连接字符串中,它将停止自动登记与 MSDTC 的连接。