2012-02-20 87 views
6

没有读取权限我写了下载mdb文件并读取它们到OLEDB提供程序的脚本。所有工作正常,但如果我尝试从表中读取,它会引发异常:Ms Access:无法读取记录; [table]

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

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

我改变权限直接在MS Access为用户“administrator”和它的作品。但问题是,这个脚本每天运行两次,下载大约20个文件。所以它不可能手动更改权限。

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

非常感谢您的任何想法!

+2

不知道,如果你可以改变的权利,但如果可能的话,它将要求您以具有管理员或所有者权限的用户身份登录到数据库。所以我建议你改为直接以这样的用户身份登录,或许通过改变你的连接字符串。我怀疑你会需要.MDW文件。 – 2012-02-20 14:24:59

回答

5

我使用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" 

而且它的工作原理:)