2012-02-20 5 views
6

에 대한 읽기 권한이 없습니다. mdb 파일을 다운로드하고 OLEDB 공급자에게 읽어주기위한 스크립트를 작성했습니다. 모두 잘 작동하지만 테이블에서 읽으려고하면 예외가 throw됩니다.Ms 액세스 : 레코드를 읽을 수 없습니다. [테이블]

Ms 액세스 : 레코드를 읽을 수 없습니다. 아니, 난 직접 사용자 "관리자"에 대한 MS 액세스에서 권한을 변경하고 작동 tblMytable

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

에 읽기 권한을. 그러나 문제는이 스크립트가 하루에 두 번씩 실행되고 약 20 개의 파일을 다운로드한다는 것입니다. 수동으로 권한을 변경할 수 없기 때문입니다.

프로그래밍 방식으로 테이블에 대한 읽기 권한을 변경할 수 있습니까?

아이디어를 제공해 주셔서 감사합니다.

+2

확실하지하지만 가능한 경우 Admins 또는 Owner 권한이있는 사용자로 db에 로그인해야합니다. 그래서 나는 대신 당신이 직접 연결 문자열을 변경하여 그러한 사용자로 로그인하려고 시도 할 것을 제안합니다. 나는 당신이 그 .MDW 파일이 필요할 것이라고 생각합니다. –

답변

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 명령을 실행합니다

"GRANT SELECT ON TABLE tblTable TO PUBLIC" 

을 그리고 그것은 작동합니다 :)

, 당신은 권한을 변경할 수있는 경우