为什么在使用c#连接oracle DB时会出现连接字符串错误?

时间:2015-06-30 07:24:02

标签: c# oracle

我想连接oracle函数并从中读取任何数据,我为此编写了这段代码:

using (OracleConnection con = new OracleConnection("Data Source=WEBSERVICE_ACCESS;User Id=webservice_access;Password=xyz;"))
{
     con.Open();
     OracleCommand cmd = new OracleCommand("LOGIN");
     cmd.CommandType = System.Data.CommandType.StoredProcedure;
     //Add your parameters here
     cmd.Connection = con;
     OracleDataReader odr = cmd.ExecuteReader();
     while (odr.Read())
     {
          Console.WriteLine(odr.GetOracleValue(0));
     }
     Console.ReadLine();
 }
  

WEBSERVICE_ACCESS是我的数据库名称   
  webservice_access是我的用户名   
  但是当运行该代码时我得到了这个错误:

System.Data.OracleClient.OracleException: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor


发生了什么?我怎么解决这个问题呢? enter image description here

1 个答案:

答案 0 :(得分:2)

  

错误ORA-12514表示侦听器收到了请求   建立与数据库或其他服务的连接。连接   监听器收到的描述符为a指定了服务名称   服务(通常是数据库服务)还没有   动态注册到监听器或尚未静态   为侦听器配置。这可能是一个临时的情况,如   在侦听器启动之后,但在数据库实例之前   在听众处注册。

此错误的可能解决方案是

通过执行以下操作检查侦听器当前已知的服务:隐藏复制代码

lsnrctl services <listener name>

1)检查所使用的网络服务名称的连接描述符中的SERVICE_NAME参数是否指定了侦听器已知的服务。

2)如果使用了简易连接命名连接标识符,请检查指定的服务名称是否为侦听器已知的服务。

3)检查listener.log文件中的事件

oracle论坛上的这个answer应该可以帮助您了解SID和SERVICE_NAME之间的区别。