Авторизация при выполнении запроса в Progress OpenEdge с C #

Я выполнил все процессы по установке и настройке базы данных Progress OpenEdge версии 11.7. Я настроил DSN с именем пользователя и паролем и для доступа к базе данных, которую я создал, и все подключено правильно.

После подключения к базе данных я получаю следующее сообщение об ошибке при выполнении запроса на получение данных:

Ошибка: ОШИБКА [HY000] [DataDirect] [Драйвер протокола ODBC Progress OpenEdge Wire] [OPENEDGE] Доступ запрещен (ошибка авторизации) (7512)

Я получил доступ к OpenEdge Management, чтобы гарантировать все разрешения для моего пользователя, как показано ниже, но я все равно получаю это сообщение об ошибке.

введите описание изображения здесь

Код:

public static bool InsertItem(string itCodigo, string descItem, string um)
    {
        bool ret = false;
        string connectString = "DSN=DSN-Name;uid=renan;pwd=*****;host=localhost;port=XXXX;db=DatabaseName;";

        using (OdbcConnection connection = new OdbcConnection(connectString))
        {
            try
            {
                connection.Open();
                IDbCommand dbcmd = connection.CreateCommand();
                string sqlstr = "select * from Hipolabor.pub.Item";
                dbcmd.CommandText = sqlstr;

                using (IDataReader rdr = dbcmd.ExecuteReader())
                {
                    var b = rdr.Read();                        
                }
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                connection.Close();
            }
        }
        return ret;
    }

Что могло быть не так?


person Renan Barbosa    schedule 02.01.2018    source источник


Ответы (1)


Разрешения, которые вы показываете из «администрирования данных», являются разрешениями 4gl. Механизмы 4gl и SQL-92 не имеют общих разрешений.

Если ничего не было сделано, исходная база данных SQL - это пользователь, создавший базу данных. В зависимости от того, какая это версия Progress и как эта база данных была настроена и создана, вам также может быть определен пользователь «sysprogress», который может быть системным администратором баз данных.

Идентификатор пользователя "renan" может не быть пользователем SQL - это также зависит от версии Progress, как была настроена эта база данных.

person Tom Bascom    schedule 02.01.2018
comment
Собственно, я создал базу данных и только потом создал нового пользователя и назначил ему права. Итак, должен ли я создать новую базу данных с пользователем renan, чтобы я мог получить доступ и выполнить операции? - person Renan Barbosa; 03.01.2018
comment
Достаточно войти в систему с помощью инструмента sql, такого как sqlexp, от имени того, кто действительно создал базу данных (или sysprogress), и предоставить разрешения. - person Tom Bascom; 03.01.2018