.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 は外部ファイルにして変更可能にしておくのがベターかも
コメント