尝试在c#中没有tnsnames连接时出现TNS监听器错误

时间:2013-04-11 19:14:10

标签: c# oracle tnsnames

我正在尝试连接到oracle数据库,而不必使用TNS名称,但它不断发出此错误:{“ORA-12504:TNS:侦听器未在CONNECT_DATA中获得SERVICE_NAME”}

string oradb = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=105.1.12.190)(PORT=1521))(CONNECT_D‌​ATA=(SERVICE_NAME=OMP1)));User ID=user;Password=pass;";

OracleConnection conn = new OracleConnection(oradb); // C#

conn.Open();

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT cast(Count(*) as varchar(20)) as trig FROM ZDMSN.TRIGGER_TEST";

以下是“TNS名称”文件中的内容:

OMP1=
(DESCRIPTION=
   (ADDRESS=
      (PROTOCOL=TCP)
         (HOST=105.1.12.193)
            (PORT=1521)
      )
 (CONNECT_DATA=
    (SID=OMP1)
    )
 )

2 个答案:

答案 0 :(得分:0)

您的IP地址存在冲突(.193与.190相比)。此外,您在TNS名称文件中使用SID名称进行连接,但在字符串中使用SERVICE名称。这可能会也可能不会奏效。尝试在连接字符串中指定(SID = OMP1)。

答案 1 :(得分:0)

使用以下连接字符串:

string cadenaDeConeccion = "User Id=AAA111;Password=BBB222;Data Source=CCC333;Connection Timeout=60;Pooling=false"

在你的情况下看起来像:

string cadenaDeConeccion = "User Id=AAA111;Password=BBB222;Data Source=OMP1;Connection Timeout=60;Pooling=false";

有关详细信息,请查看此链接:

http://www.systemdeveloper.info/2013/10/oracle-tnsnamesora-network-configuration.html