以编程方式更改表Access数据库的用户权限

时间:2016-02-24 18:22:21

标签: c# database ms-access

有没有办法使用C#更改Access数据库中的表的用户权限?我有一个问题是读取并插入到表中,该表拒绝了当前用户的读/插权限。当我手动更改权限工作,但我想通过C#以编程方式更改它。我已经尝试过这个SQL命令:

GRANT SELECT ON TABLE myTable TO Admin

但似乎我没有权利采取这一行动。这是它在Access中的样子。

access screenshot

编辑:

要调用@ rybo103方法,我已使用此代码,但我收到错误。

DAO.DBEngine engine = new DAO.DBEngine();
string path = @"C:\Database.mdb";
DAO.Database db = engine.OpenDatabase(path, false, false, "");
List<DAO.PermissionEnum> flags = new List<PermissionEnum>();
flags.Add(DAO.PermissionEnum.dbSecFullAccess);
AddPermissions(db, "ECR", "Admins", flags);

错误:

Cannot open the Microsoft Office Access database engine workgroup information file.

2 个答案:

答案 0 :(得分:1)

在Access中,您需要使用DAO进行这些架构更改。

https://msdn.microsoft.com/en-us/library/office/ff835373.aspx

void AddPermissions(DAO.Database db, string tableName, string groupName, IList<DAO.PermissionEnum> addFlags)
{
    var container = db.DaoDB.Containers["Tables"];
    var document = container.Documents[tableName];
    document.UserName = groupName;

    int permissions = document.Permissions;
    foreach (var flag in addFlags)
    {
        permissions = permissions | (int)flag;
    }

    document.Permissions = permissions;
}

答案 1 :(得分:1)

@HansUp sugestons帮助。 Finnaly,我将Jet OLEDB:System Database属性添加到我的OleDb连接字符串中,它可以工作。即使没有GRANT命令也可以。