C#connect进度数据库错误

时间:2015-12-08 11:58:51

标签: c# database odbc openedge progress-db

我想用c#连接本地的进度数据库。

我的c#代码是:

 string connectionString = "DSN=OpenEdge Wire Protocol;Host = localhost; DB = E:\\programs\\DBs\\TrDB\\trnakdb; UID = connuser; PWD = 123456; PORT = 11112";
        DataTable dt = new DataTable();
        int rows;

        using (OdbcConnection connection = new OdbcConnection(connectionString))
        using (OdbcCommand command = connection.CreateCommand())
        using (OdbcDataAdapter adapter = new OdbcDataAdapter(command))
        {
            connection.Open();
            command.CommandText = "SELECT * FROM PUB.FTTEFBAS";
            rows = adapter.Fill(dt);
        }

        Console.WriteLine("adapter.Fill() returned {0}", rows);
        Console.WriteLine("The data table contains {0} rows and {1} columns.",
          dt.Rows.Count,
          dt.Columns.Count
          );
        foreach (DataRow dataRow in dt.Rows)
        {
            string babili = dataRow.ItemArray.ToString()+"####";
            for (int key = 0; key < dataRow.ItemArray.Length; ++key)
                babili += "\t" + key + "=>" + dataRow.ItemArray[key];

            Console.WriteLine(babili);
        }

但它给出了错误:

System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Access denied (Authorisation failed) (7512)

我可以使用此用户名连接进度数据的dictinary或数据管理工具。

如果我尝试选择系统表,则不会发生错误。但是当我尝试从PUB模式列出任何表时,它会给出错误。

由于

微米。 Yasin Birer

1 个答案:

答案 0 :(得分:1)

DBA需要向您的用户标识授予SQL权限。字典等使用4GL权限,默认情况下是全开的。默认情况下,SQL授权是限制性的。

如果你知道DBA用户ID(通常是“sysprogress”)和密码,你可以试着证明你的连接。并根据需要向用户授予权限。

您可能会发现此kbase很有用:http://knowledgebase.progress.com/articles/Article/20143/p