2012-02-20 117 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" 

而且它的工作原理:)