【发布时间】:2016-02-24 18:22:21
【问题描述】:
有没有办法使用 C# 更改 Access 数据库中表的用户权限?我在读取和插入表时遇到问题,该表拒绝了当前用户的读取/插入权限。当我手动更改权限时,我想通过 C# 以编程方式更改它。我已经尝试过这个 SQL 命令:
GRANT SELECT ON TABLE myTable TO Admin
但我似乎无权执行该操作。这是它在 Access 中的外观。
编辑:
为了调用@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.
【问题讨论】:
-
像这样没有
TABLE也能工作吗? ->GRANT SELECT ON myTable TO Admin -
@HansUp 我有一个异常运行这个命令:
Cannot open the Microsoft Jet engine workgroup information file. -
请告诉我们您在哪里遇到了该错误。你知道什么是 Access 工作组信息文件吗?你知道如何找到你的吗?你知道如何在你的 OleDb 连接字符串中引用它吗?
-
我在@rybo103 代码中的
document.UserName = groupName;行遇到了这个错误。我只知道基本的 Access 工作组信息文件。是的,我可以找到我的。我对这个参考一无所知。 -
我认为从 OleDb 连接执行
GRANT语句应该更简单。在连接字符串中,使用Jet OLEDB:System Database属性引用您的工作组信息文件,如Access connection strings 中所述