我有一个BizTalk 2013r2应用程序,其中一个WCF-Oracle发送端口在32位主机下运行。
在我的测试环境中运行时,它可以正常工作。但是,在我的开发框中,我收到以下错误:
“ORA-12154:TNS:无法解析指定的连接标识符”
发送端口上设置的地址是“oracledb:// test_godw_lincoln /”。我的理解是应该从本地tnsnames.ora文件中解析ip地址和端口。我有一个正确设置TNS_ADMIN的系统环境变量:
在命令提示符下,如果我输入“set tns_admin”,则会显示以下内容:
TNS_ADMIN = C:\应用\ biztalk.admin \产品\ 12.1.0 \的Client_1 \网络\管理员
如果我打开文件“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地址)
如果我在同一个dev vm上打开Sql Developer,那么我可以使用tnsname条目“test_godw_lincoln”打开与所需数据库的连接:
我意识到Oracle可以在不使用tnsnames.ora的情况下通过适配器进行寻址,但我知道如果要使用环境事务(应用程序确实使用它们),那么地址必须是通过tnsnames.ora
有关如何使用此特定VM查找问题原因的任何建议吗?
来自Dmitir的问题 - 注册表是空的:
来自Felix的建议 - 我能够从Visual Studio服务器资源管理器在同一台开发服务器上创建连接:
但是,如果我尝试从“使用适配器服务”向导(添加生成的项目)进行连接,那么我会收到ORA-12154错误:
答案 0 :(得分:0)
完成所有这些更改后,您是否重新启动了主机实例?
答案 1 :(得分:0)
尝试连接时不带tnsname,连接字符串格式为:host:port / database_name
答案 2 :(得分:0)
这归结为tnsnames.ora文件的一个神秘问题。来自@Hichamveo的建议有帮助,而是在工作环境中尝试我的坏tnsnames.ora文件,我从一个有效的环境中复制了tnsnames文件。我发现dev VM然后开始工作 - 所以我知道问题出在tnsnames.ora文件而不是ODAC / ODP.Net程序集。
然后我花了很长时间试图找出坏的tnsnames文件坏了什么。我使用了文件比较工具并在http://brantwills.github.io/tns-check/尝试了一个linter,但这些没有显示任何问题。