2014-10-30 42 views
1

是否托管ODP.NET x64 12.1.0.2 tnsname.ora是否支持使用IFILE?我无法让它工作。ODP.NET托管tnsnames.ora IFILE参考

例如,正常的“胖客户端”我已经安装了数年的非托管Oracle客户端,我曾经有过我的tnsnames.ora文件与上一行:

IFILE=C:\OracleDataSources\tnsnames.MAIN

然后是C:\ OracleDataSources \ tnsnames.MAIN文件包含IFILE对配置文件的引用,这些文件包含组织中每个其他Oracle实例的实际数据源定义。这有助于保持我们的配置文件集中并与安装文件分开,并且在使用完整的Oracle客户端安装时无错误地工作。

现在我正在努力升级一些使用旧版/弃用System.Data.OracleClient引用的代码来使用ODP.NET托管客户端。如果我尝试使用与管理ODP.NET库IFILE引用,我得到以下错误:

ORA-12154: TNS:could not resolve the connect identifier specified

故障诊断过程中,我证实,正在从tnsnames.ora中使用Oracle.ManagedDataAccess.Client.OracleDataSourceEnumerator.GetDataSources()方法(检索到的任何数据源http://docs.oracle.com/html/B28089_01/OracleDataSourceEnumeratorClass.htm#CBAHABEH),它将返回从tnsnames.ora枚举的所有数据源的列表。

当在tnsnames.ora中只使用IFILE参考时,我从GetDataSources获得0个结果。如果我手动将数据源别名直接添加到web.config TNS_ADMIN设置(而不是使用IFILE参考)中指定的文件夹中的tnsnames.ora文件,则数据源将正确返回GetDataSources,并且我可以连接到数据源代码使用ODP.NET成功。

有没有什么办法可以将IFILE的tns名称引用到ODP.NET中?

回答

3

对不起,使用ODP.NET,托管驱动程序时,配置文件和TNSNAMES.ORA都不支持IFILE。

也许TNS_ADMIN配置文件条目会为你实现同样的事情。

+0

这看起来确实如此。是否有任何官方文件说明您可以指示我?你也知道非托管的ODP.NET是否支持IFILE?谢谢 – BateTech 2014-10-31 12:10:50

+0

我刚刚注意到你在Oracle ODP.NET产品团队中。我认为这对我来说已经足够了!谢谢您的帮助。我可以将我的所有tnsnames条目合并到一个tnsnames.ora文件中,这对我很有用。 TNS_ADMIN也是另一个不错的选择。从最初的测试我真的很喜欢托管的ODP.NET库! – BateTech 2014-10-31 12:31:26

+1

是的,非托管ODP.NET支持IFILE以及所有其他TNSNAMES参数(在这种情况下我们不必实现它的托管版本 - 它已经由非托管网络库处理)。 – 2014-11-01 09:00:58