.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 へパスを入れておく

<oracle.manageddataaccess.client>
    <version number="*">
      <!--ここから-->
      <settings>
        <setting name="TNS_ADMIN" value="%ORACLE_HOME%/network/admin" />
      </settings>
      <!--ここまで-->
      <datasources>
            <datasource alias="SampleDataSource" descriptor="(略)" />
      </datasources>
    </version>
</oracle>

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


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

コメント