Oracleのデータベースに接続するために、.Net 4.6.2アプリケーションをMicrosoftのSystem.Data.OracleClientからOracle独自の管理ODP.Net(Nugetパッケージ、バージョン12.2.11)に移行します。私は、Oracleクライアントがインストールされている(11gR2)とは別に、参照を変更することから、句を使用して、名前などのコードはほぼ同じです。しかし、私の事前移行コードは非常にうまく接続していますが、移行後は接続されません。その代わりに、tnsnames.oraファイルなぜManaged ODP.NetはSERVICE_NAMEを要求していますか?
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA.
OracleException
をスロー同じであり、アプリケーションの接続文字列が同じである、と私は前にサービス名を指定するために必要なことがありません。のtnsnames.ora:
ORACLEDBSERVER2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleDBServer2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcdb10g)
(SERVER = DEDICATED)
)
接続文字列:
USER ID=MATTESTNHADMIN;PASSWORD=XXXXX;DATA SOURCE=oracledbserver2
は、なぜそれが今でサービス名を要求していますか? CONNECT_DATA部分に節を追加しても、私は同じエラーが発生します。(SERVICE_NAME = orcdb10g)
その洞察に感謝します。 tnsnames.oraファイルを実行可能フォルダにコピーすると、そのトリックが完了したようです。私はオラクルがこの一見無意味な変化をもたらした理由を知りたいです!混乱を避けるために、シンボリックリンクがここで呼び出されていると思います。 –
リンクされた答えで指摘したように、 'tnsnames.ora'ファイルがどのように発見されるのかという共通の方法はありません。いくつかのオプションがありますが、すべて同じフォルダを指す必要があります。はい、シンボリックリンクを使用して必要な場合。 –