ODP.Net中的连接字符串

时间:2014-12-10 12:39:13

标签: .net oracle odp.net

最初我使用oraoledb.oracle提供程序来连接到Oracle数据库,并且很容易构建连接字符串:

  

Provider = OraOLEDB.Oracle; User Id = myId; Password = myPassword; Data Source = data.customer.com

并且一切都按预期工作,但目前我切换到ODP.Net以摆脱安装oracle客户端,我得到一个错误ORA-12154: TNS:could not resolve the connect identifier specified,其中包含以下连接字符串:

  

Data Source = data.customer.com; User Id = myId; Password = myPassword

有人可以告诉我,我犯了错误吗?

4 个答案:

答案 0 :(得分:3)

就个人而言,我宁愿不依赖于机器上定义的tnsnames.ora。使用更长的连接字符串(参见下面的示例),您可以部署您的程序而不考虑目标系统上可能不存在的tnsnames.ora。

使用不带tnsnames.ora的ODP.NET的示例:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));
User Id=myUsername;Password=myPassword;

请参阅also

答案 1 :(得分:3)

托管ODP.NET与tnsnames.ora一起使用,但它需要一些额外的配置才能工作。这是你的问题。您正在尝试使用tnsnames.ora中的名称,该名称仅在您的machine.config,Web.config或app中设置TNS_ADMIN环境变量或配置部分时有效。配置。能够使用tnsnames.ora的另一个选择是非托管的ODP.NET驱动程序,在我看来这很难用。

尝试使用EZCONNECT名称,托管和非托管驱动程序都支持 ,而无需使用tnsnames.ora文件或任何其他配置。

答案 2 :(得分:0)

我最近在这条路上冒险,只是在尝试使用ODP.net运行网站时遇到32x / 64x问题。

这是我的工作连接字符串: Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ip/server)(PORT=port)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=service_id)));User Id=user_id;Password=p_word"

编辑: Darn,@ ilekseev太快了..

答案 3 :(得分:0)

如果您使用Oracle安装程序安装ODP.NET,则将包含data.customer.com的TNSNAMES.ORA复制到您的{ODP.NET ORACLE HOME} / NETWORK / ADMIN目录中,它应该可以正常工作,因为安装程序设置了TNS_ADMIN machine.config中的变量,(对于Managed ODP.NET)。

如果您想完全没有TNSNAMES.ORA条目,也可以使用SQLNET EZ Config连接字符串语法。

例如: 数据源= MyHost:MyPort / MyOracleService;用户ID = myUsername;密码= myPassword;