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

本文关键字:tnsnames TNS 监听器 错误 连接 | 更新日期: 2023-09-27 18:08:37

我试图连接到oracle数据库而不必使用TNS名称,但它一直给出此错误:{"ORA-12504: TNS:listener未在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 Names'文件中的内容:

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

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

IP地址冲突。193 vs. 190)。另外,你连接的是TNS名称文件中的SID名称,而不是字符串中的SERVICE名称。这可能起作用,也可能不起作用。尝试在连接字符串中指定(SID=OMP1)。

使用以下连接字符串:

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