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

女士 Access 权限:无法读取记录;没有对tblMytable 的读取权限

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

我直接在Ms Access中为用户“管理员”更改了权限,并且它可以正常工作。但是问题在于,该脚本每天至少运行两次,并下载约20个文件。因此,不可能手动更改权限。

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

非常感谢您的任何想法!

最佳答案

我通过使用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命令:
"GRANT SELECT ON TABLE tblTable TO PUBLIC"

它有效:)

关于ms-access - 女士Access : Record(s) cannot be read; no read permission on [table],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9361259/

10-11 20:03
查看更多