Ms Access:记录无法读取; 没有[表]的读取权限

Jan*_*nda 7 oledb permissions ms-access database-permissions

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

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

 var cmd = new OleDbCommand("SELECT * FROM tblMytable", conn);
 var reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我直接在Ms Access中为用户"administrator"更改了权限,它可以正常工作.但问题是,这个脚本每天运行两次,下载大约20个文件.所以不可能手动更改权限.

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

非常感谢任何想法!

Jan*_*nda 7

我通过使用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;
Run Code Online (Sandbox Code Playgroud)

var conn = new OleDbConnection(connectionString);

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

"GRANT SELECT ON TABLE tblTable TO PUBLIC"
Run Code Online (Sandbox Code Playgroud)

它的工作原理:)