所以我要通过C#连接到外部服务器。我刚刚从这里在我的机器上安装了 Oracle 11g 客户端:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html(一个255MB)。

阅读许多博客/问题后,我发现本文很有用:

http://dbaspot.com/oracle-faq/444787-ora-12541-tns-no-listener.html

这是正确的吗?我什么都做不了。 DBA必须编辑 LISTENER.ORA 文件吗?

我的 tnsnames.ora 看起来像这样:

  TestingConnect=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TEST)
    )
  )

这使我犯了一个错误:
Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection();

connection.ConnectionString = "Data Source=TestHostName.us.local;Persist Security Info=True;" + "User ID=tesName;Password=test";

connection.Open() //Throwing ERR!!!

我应该怎么办?我感谢任何评论。谢谢!

最佳答案

您可以通过以下两种方法执行此操作:
使用TNSNames文件,数据源应指定TNSHosts条目名称(tnsnames.ora中第一个“=”之前的位),而不是主机名:

connection.ConnectionString = "Data Source=TestingConnect;Persist Security Info=True;" + "User ID=tesName;Password=test";

或者,您可以将整个TNS条目放在连接字符串中,如下所示:
connection.ConnectionString = "Data Source=(DESCRIPTION = " +
    "(ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))" +
    "(CONNECT_DATA =" +
    "(SERVER = DEDICATED)" +
    "(SERVICE_NAME = TEST))" +
    ");Persist Security Info=True;User ID=tesName;Password=test";

关于c# - OracleConnection.Open抛出没有监听器的ORA-12541 TNS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12571379/

10-11 15:57