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