【问题标题】:Authorization on executing query on Progress OpenEdge with C#使用 C# 在 Progress OpenEdge 上执行查询的授权
【发布时间】:2018-01-02 20:33:45
【问题描述】:

我已完成安装和配置 Progress OpenEdge 11.7 版数据库的所有过程。我使用用户名和密码配置了 DSN,并访问了我创建的数据库并正确连接了所有内容。

在执行数据库连接后,执行查询获取数据时收到以下错误消息:

错误: ERROR [HY000] [DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Access denied (Authorization failed) (7512)

我已访问 OpenEdge 管理以保证我的用户的所有权限,如下所示,但我仍然收到此错误消息。

代码:

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;
    }

可能出了什么问题?

【问题讨论】:

    标签: c# database-administration openedge progress-4gl progress-db


    【解决方案1】:

    您从“数据管理”中显示的权限是 4gl 权限。 4gl 和 SQL-92 引擎不共享权限。

    如果没有做任何其他事情,初始 SQL dba 就是创建该数据库的用户。根据 Progress 的版本以及该数据库的设置和创建方式,您可能还定义了一个“sysprogress”用户,该用户可能是系统 DBA 用户。

    “renan”用户 ID 可能不是 SQL 用户——这也取决于此数据库的设置方式的 Progress 版本。

    【讨论】:

    • 实际上,我已经创建了数据库,然后才创建了一个新用户并将权限分配给该用户。那么我应该使用用户“renan”创建一个新数据库,以便我可以访问和执行操作吗?
    • 使用 sqlexp 等 sql 工具作为实际创建数据库(或 sysprogress)并授予权限的人就足够了。
    猜你喜欢
    • 2012-03-19
    • 2021-05-07
    • 2022-11-29
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2021-07-20
    • 2020-02-08
    • 2019-07-20
    相关资源
    最近更新 更多