Oracle Managed Data Provider не анализирует полные записи TNSNames - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь использовать следующий код, который я нашел в нескольких местах, для чтения файла 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).Есть идеи, почему и как получить оба?Разве он не понимает «DESCRIPTION_LIST»?

Вот вывод:

InstanceName : PDB_01
ServerName : server1.domain.com
ServiceName : PDB01_SRV
Protocol : TCP
Port : 1648
--------------------

Только одна из двух записей в файле ORA.

Мое намерениепроанализировать файл TNSNames.ora и получить его содержимое.

...