Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OracleConnection.Open正在抛出ORA-12541 TNS无侦听器_C#_Oracle_Oracle11g_Database Connection_Connection String - Fatal编程技术网

C# OracleConnection.Open正在抛出ORA-12541 TNS无侦听器

C# OracleConnection.Open正在抛出ORA-12541 TNS无侦听器,c#,oracle,oracle11g,database-connection,connection-string,C#,Oracle,Oracle11g,Database Connection,Connection String,因此,我通过C#连接到外部服务器。我刚刚在我的机器上安装了Oracle11g客户端(255MB一台) 在阅读了许多博客/问题后,我发现这篇文章很有用: 那么这是正确的吗?我什么也做不了。DBA必须编辑LISTENER.ORA文件吗 我的tnsnames.ora如下所示: TestingConnect= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))

因此,我通过C#连接到外部服务器。我刚刚在我的机器上安装了Oracle11g客户端(255MB一台)

在阅读了许多博客/问题后,我发现这篇文章很有用:

那么这是正确的吗?我什么也做不了。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"; 

谢谢你的意见。我改变了我的连接字符串,它工作了。下面是它的样子:

 private static string GetConnectionString()
    {
        return "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=TestHostName.us.local)(PORT=1523) ) )" +
               "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CCDB)));User id=UserName; Password=Password; enlist=false; pooling=false;";
    }

您确定您的主机名“TestHostName.us.local”正确吗?是否使用命令行中的“tnsping TestingConnect”检查数据库是否可访问?导致此错误的原因有很多。如果您不想拥有TNSNames.ora条目,可以尝试使用TNS less连接字符串。看见只是想看看这是否有效。这可能无法解决问题,但会消除TNSNames.ora作为问题的可能性。