我想用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
答案 0 :(得分:1)
DBA需要向您的用户标识授予SQL权限。字典等使用4GL权限,默认情况下是全开的。默认情况下,SQL授权是限制性的。
如果你知道DBA用户ID(通常是“sysprogress”)和密码,你可以试着证明你的连接。并根据需要向用户授予权限。
您可能会发现此kbase很有用:http://knowledgebase.progress.com/articles/Article/20143/p