对于Oracle.ManagedDataAccess.dll 12和18,如果要使用tnsname.ora别名,则必须使用相应的路径定义环境变量TNS_ADMIN。
我刚刚发现19版本能够在没有这个环境变量的情况下获得tnsname.ora配置,但我不知道如何实现?
web.cong和machine.config都不包含这个环境变量。
注册表编辑器中似乎有一个路径,但是当我用错误的路径修改路径时,我的项目仍然工作。

根据我已经测试过的内容,下面列出了哪些是有效的,哪些是无效的:
19.3 with Oracle.ManagedDataAccess 19.3 (和Oracle.ManagedDataAccess 19.3):不使用TNS_ADMIN Env19.3 with Oracle.ManagedDataAccess 18.6 (和以前):如果没有TNS_ADMIN Env<代码><代码>H 121本地客户端D22与Oracle.ManagedDataAccess(所有版本):没有TNS_ADMIN EnvEnvH 224F 225所以我想知道为什么这个案子会起作用?
此外,在Oracle.ManagedDataAccess中是否有一个返回使用的tnsname.ora路径的方法?
谢谢,
发布于 2019-12-26 09:26:09
谢谢大家的回答。
我最终找到了使用Process (thx @WernfriedDomscheit)并使用TNS_ADMIN过滤TNS_ADMIN列的解决方案。
注册表编辑器中有两个包含TNS_ADMIN变量的路径:
我只是想移除非WOW6432Node路径。如果我还删除了WOW6432Node 1,那么Oracle.ManagedDataAccess.dll就会成功失败。
发布于 2019-12-24 14:59:25
我没有任何专门使用Oracle.ManagedDataAccess.dll的经验,但我确实知道,一般来说,没有任何客户端需要设置TNS_ADMIN。TNS层本身具有查找tnsnames.ora的优先顺序,这在调用客户端之外。首先,它寻找一个TNS_ADMIN环境变量。如果没有设置它,或者没有找到tnsnames.ora所在的TNS_ADMIN点,那么接下来它将检查进程的当前目录。如果在那里找不到,它会检查$ORACLE_HOME/network/admin。我要说的是,“如果您想使用tnsname.ora别名,那么您必须用相应的路径定义环境变量TNS_ADMIN”,这是基于对阅读或观察的错误解释得出的结论。
https://stackoverflow.com/questions/59470083
复制相似问题