.NET から Oracle 接続で TNS解決できない

 .NET から Oracle.ManagedDataAccess を利用、Data Source へ TNS名を入れるが、

ORA-12154: TNS: 指定された接続識別子を解決できませんでした

が出てしまう
今回は Oracleを利用したアプリケーションの環境で、Oracle DBへ接続するため、Oracle関連の一般的な環境変数がほとんど入っていない(からかどうかは不明)

要は tnsnames.ora にTNS定義してあるが、.NET から引けてない状態


解決方法1
oracle のディレクトリにある tnsnames.ora を実行環境へコピー

解決方法2
.NET側で app.config の TNS_ADMIN へパスを記載して、環境変数 ORACLE_HOME へパスを入れておく

  1. <oracle.manageddataaccess.client>  
  2.     <version number="*">  
  3.       <!--ここから-->  
  4.       <settings>  
  5.         <setting name="TNS_ADMIN" value="%ORACLE_HOME%/network/admin" />  
  6.       </settings>  
  7.       <!--ここまで-->  
  8.       <datasources>  
  9.             <datasource alias="SampleDataSource" descriptor="(略)" />  
  10.       </datasources>  
  11.     </version>  
  12. </oracle>  

解決方法3
tnsnames.ora の該当箇所 TNS名=Values の Values の所をそのまま Data Source=Values へ持ってきて、tnsnames.ora を利用しない


1 は元が変更されても反映されないので、シンボリックリンクにしておくとよいかも
2 は既に環境変数 ORACLE_HOME が設定されていれば利用しやすい
3 は決め打ちになるので、Data Source は外部ファイルにして変更可能にしておくのがベターかも

コメント