私のアプリケーションには、4 つの異なるデータベース サーバー (MS SQL、MySql、SQLite、および Oracle) に接続する機能があり、データベースが存在しない場合は、指定されたデータベース名で新しいデータベースが作成されます。このロジックは、Oracle を除くすべてのサーバーで機能します。データベースが存在する場合、4 台のサーバーすべてで接続できるので、問題は tns や間違った dll などとは関係ないと思いますが、この場合は接続文字列が間違っている可能性があります。
Oracle サーバーのバージョンは 11.0.0.1 で、必要な odac ドライバーをインストールしました。私のPCにはtnsが設定されており、データベースが存在する場合、すべてが正常に機能しています。この場合、接続文字列は次のようになります。
User Id=<myuser>; Password=<mypassword>; POOLING=true; Connection Lifetime=15;
Connection Timeout=15; incr pool size=10; Data Source=
(
DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=<myserveraddress>)
(PORT=<myport>)
)
(
CONNECT_DATA=
(SID=<mysid>)
(SERVICE_NAME=<mydatabasename>)
)
);
ここで、接続文字列からサービス名セクションを削除すると、「ORA-12505: TNS: リスナーは接続記述子で指定された SID を現在認識していません」という例外が発生します。
サーバーにのみ接続したいが、データベースには直接接続したくない場合はどうすればよいですか?