【发布时间】:2018-06-29 19:46:31
【问题描述】:
我有一个 BizTalk 2013r2 应用程序,其 WCF-Oracle 发送端口在 32 位主机下运行。
在我的测试环境中运行时,它运行良好。但是,在我的开发盒上,我收到以下错误:
“ORA-12154: TNS: 无法解析指定的连接标识符”
发送端口上设置的地址是 "oracledb://test_godw_lincoln/" 。我的理解是ip地址和端口应该从本地的tnsnames.ora文件中解析出来。我正确设置了 TNS_ADMIN 的系统环境变量:
在命令提示符下,如果我输入“set tns_admin”,则会显示以下内容:
TNS_ADMIN=C:\app\biztalk.admin\product\12.1.0\client_1\Network\Admin
如果我打开文件“C:\app\biztalk.admin\product\12.1.0\client_1\Network\Admin\tnsnames.ora”,则会看到以下条目:
test_godw_lincoln =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xxx.xx.xx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gotest)
)
)
(我已经替换了真实IP地址)
如果我在同一个开发虚拟机上打开 Sql Developer,那么我可以使用 tnsname 条目“test_godw_lincoln”打开与所需数据库的连接:
我意识到可以不使用 tnsnames.ora 从适配器寻址 Oracle,但我知道如果要使用环境事务(应用程序确实使用它们),那么地址必须通过 tnsnames.ora
关于如何找出这个特定 VM 问题的原因有什么建议吗?
来自 Dmitir 的问题 - 注册表为空:
来自 Felix 的建议 - 我能够从 Visual Studio 服务器资源管理器在同一开发服务器上创建连接:
但是,如果我尝试从“使用适配器服务”向导(添加生成的项目)进行连接,则会收到 ORA-12154 错误:
【问题讨论】:
-
检查您的系统环境变量 TNS_ADMIN 是否具有正确的值,而不是用户环境变量。
-
感谢您的评论 Felix 但是是的,它是一个系统环境变量
-
嗨 Ravi,我从这里运行了 Sql,得到了 SID=329 和 SYS_CONTEXT=gotest。不知道这有什么帮助。我怀疑问题的根本原因可能是一些 64 / 32 位库不匹配 - 但这只是一个猜测
-
尝试在连接字符串中指定来自tnsnames.ora
"oracledb:// (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xxx.xx.xx)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = gotest)))"的DB的完整描述