0

バックエンドの 10g データベースに接続するために ODAC 10g (1.x) を使用する 32 ビット .Net Windows アプリケーションがあります。この展開では問題なく動作します。

現在、新しい開発マシンをセットアップ中です。このマシンには ORACLE 11g (64 ビット) がインストールされています。データベースの接続で問題が発生しています。

これは、データベースへの接続に使用しているコード ブロックです。

dataString = "user id=xxx;password=\"xxx\";data source=localhost:1521/ORCL";
using (OracleConnection oraconn = new OracleConnection(dataConn))
{
    oraconn.Open();

    Oracle.DataAccess.Client.OracleCommand cmd = new OracleCommand(sOraSQL, oraconn);
    cmd.CommandType = CommandType.Text;
    Oracle.DataAccess.Client.OracleDataAdapter da = new OracleDataAdapter(cmd);

    DataTable dt = new DataTable();
    da.Fill(dt);

    oraconn.Close();
    return dt;
}

「oraconn.Open()」コマンドで例外が発生します。

ora-12514: TNS: リスナーは現在、接続記述子でリクエストされたサービスを認識していません

TNSNAMES.ORA ファイルは次のようになります。

# tnsnames.ora Network Configuration File: C:\app\DjM\product\11.2.0\dbhome_1    \network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.168.1.100)
    )
  )

SQLNET.ORA ファイルは次のようになります。

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (NTS)

接続文字列は次のようになります。

"user id=xxx;password=\"xxx\";data source=localhost:1521/ORCL"

ノート::

SQLDeveloper を実行して同じ SID (ORCL) を指すことができ、DB インスタンスに正常に接続できます。

元のマシンに 11g 32 ビット ODAC をインストールすることもでき、問題なく動作しました。

これは、tnsnames に関連する構成か、それらの行に沿ったものでなければなりません。

4

1 に答える 1

0

次のような接続文字列を使用してみてください。

Data Source=ORCL;User Id=User;Password=Password;

オラクルのその他の例を次に示します

于 2012-09-12T21:15:07.317 に答える