【问题标题】:Ms Access: Record(s) cannot be read; no read permission on [table]Ms Access:无法读取记录; [table] 没有读取权限
【发布时间】:2012-03-10 19:13:49
【问题描述】:

由于 OLEDB 提供程序,我编写了用于下载 mdb 文件并读取它们的脚本。一切正常,但如果我尝试从表中读取,它会引发异常:

Ms Access:无法读取记录; tblMytable 没有读取权限

 var cmd = new OleDbCommand("SELECT * FROM tblMytable", conn);
 var reader = cmd.ExecuteReader();

我直接在 Ms Access 中为用户“管理员”更改了权限,它可以工作。但问题是,这个脚本必须每天运行两次,它会下载大约 20 个文件。所以手动更改权限是不可能的。

是否可以通过编程方式更改表的读取权限?

非常感谢您的任何想法!

【问题讨论】:

  • 不确定您是否可以更改权限,但如果可能,它将要求您以具有管理员或所有者权限的用户身份登录 db。因此,我建议您尝试直接以这样的用户身份登录,也许是通过更改连接字符串。我怀疑您将需要 .MDW 文件。

标签: ms-access permissions oledb database-permissions


【解决方案1】:

我通过使用 system.mdw 文件解决了这个问题。我将此文件从“c:\Users\Administrator\AppData\Roaming\Microsoft\Access\”(在 Win7 中)复制到应用程序目录(App_Data)并修改了连接字符串。

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Database.MDB;Persist Security Info=True;Jet OLEDB:System Database=|DataDirectory|\System.MDW;

var conn = new OleDbConnection(connectionString);

如果仍然无法读取数据,我执行授权命令:

"GRANT SELECT ON TABLE tblTable TO PUBLIC"

它有效:)

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2013-11-27
    • 2017-02-12
    • 2013-05-23
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多