Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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# Oracle托管数据提供程序不分析完整的TNSNames条目_C#_Oracle_Tnsnames - Fatal编程技术网

C# Oracle托管数据提供程序不分析完整的TNSNames条目

C# Oracle托管数据提供程序不分析完整的TNSNames条目,c#,oracle,tnsnames,C#,Oracle,Tnsnames,我正在尝试使用我在几个地方找到的以下代码来读取TNSNames.ora文件 OracleClientFactory factory = OracleClientFactory.Instance; if (factory.CanCreateDataSourceEnumerator) { OracleDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerato

我正在尝试使用我在几个地方找到的以下代码来读取TNSNames.ora文件

        OracleClientFactory factory = OracleClientFactory.Instance;

        if (factory.CanCreateDataSourceEnumerator)
        {

            OracleDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerator() as OracleDataSourceEnumerator;

            DataTable dt = dsenum.GetDataSources();
            foreach (DataRow row in dt.Rows)
            {
                Console.WriteLine(dt.Columns[0] + " : " + row[0]);
                Console.WriteLine(dt.Columns[1] + " : " + row[1]);
                Console.WriteLine(dt.Columns[2] + " : " + row[2]);
                Console.WriteLine(dt.Columns[3] + " : " + row[3]);
                Console.WriteLine(dt.Columns[4] + " : " + row[4]);
                Console.WriteLine("--------------------");

            }
        }
TNSNames.Ora条目如下所示

PDB01= (DESCRIPTION_LIST= (LOAD_BALANCE=OFF)(FAILOVER=ON)
 (DESCRIPTION =  (CONNECT_TIMEOUT=3)(RETRY_COUNT=1)
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = server1.domain.com)(PORT = 1648)))
            (CONNECT_DATA = (SERVICE_NAME = PDB01_SRV)))
 (DESCRIPTION =    (CONNECT_TIMEOUT=3)(RETRY_COUNT=1)
   (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = server2.domain.com)(PORT = 1648)))
             (CONNECT_DATA =(SERVICE_NAME = PDB01_SRV)))) 
但是,我看到
GetDataSources
方法总是只返回第一个数据源(server1.domain.com),而不返回第二个数据源(server2.domain.com)。你知道为什么以及如何两者兼得吗?它不理解“描述列表”吗

以下是输出:

InstanceName : PDB_01
ServerName : server1.domain.com
ServiceName : PDB01_SRV
Protocol : TCP
Port : 1648
--------------------
ORA文件中两个条目中只有一个条目


我的目的是解析TNSNames.ora文件并了解其内容。

我认为您的TNSNames.ora是错误的。您只为两个服务设置了一个别名,看起来您错过了一个line@WernfriedDomscheit,我现在用从Oracle团队收到的确切文件更新了一个更相关的TNSNames示例。使用tnspingw测试您从
控制台获得的输出是什么。WriteLine(…)
?请编辑您的问题,而不是将附加信息作为注释。还向问题添加了输出结果