Не удается получить список таблиц из базы данных Oracle - conn.GetSchema («Таблицы») - PullRequest
0 голосов
/ 19 апреля 2019

Мне нужно получить список таблиц в базе данных Oracle, определенной DSN, который использует драйвер Oracle ODBC.

Однако OdbcConnection.GetSchema("Tables") выдает исключение ERROR [HYT00] [Oracle][ODBC][Ora]ORA-01013: user requested cancel of current operation\n или ORA-00604: error occurred at recursive SQL level 1 примерно через 30 секунд.

using (OdbcConnection connection = new OdbcConnection("Driver={Oracle in OraDB18Home1};Dbq=XE;Uid=system;Pwd=mypassword;"))
{ 
            connection.Open();
            //Also unsuccessful with "Views" and "Columns", but works with "DataTypes" and "Restrictions"
            DataTable schema = connection.GetSchema("Tables");
}

База данных недавно установлена ​​и не слишком велика.

Я могу вызвать GetSchema () без параметров, чтобы успешно извлечь все поддерживаемые коллекции схем.

Я также могу успешно выполнить запрос к моей базе данных:

OdbcCommand command = new OdbcCommand("SELECT * FROM vendors")
{
           Connection = connection
};
OdbcDataReader reader = command.ExecuteReader();

1 Ответ

0 голосов
/ 19 апреля 2019

Вы должны прекратить использование ODBC. Используйте ODP.NET - это золотой поставщик Oracle .NET. И использовать «управляемую» версию, то есть Oracle.ManangedDataAccess. Этот код ниже будет нормально работать

var conn = new OracleConnection("Data Source=server:1521/sid;password=pwd;user id=usr");
conn.Open();
var tbl = conn.GetSchema();
conn.Close();
Consile.WriteLine(tbl.Rows.Count.ToString());
...