2012-02-20 7 views
6

ho scritto script per scaricare i file mdb e leggerli grazie al provider OLEDB. Tutto funziona bene, ma se provo a leggere dalla tabella, viene generata un'eccezione:Accesso Ms: non è possibile leggere i record; nessuna autorizzazione di lettura su [table]

Accesso Ms: Impossibile leggere il/i record; nessun permesso di lettura su tblMyTable

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

ho cambiato i permessi direttamente in MS Access per l'utente "amministratore" e funziona. Ma il problema è che questo script viene eseguito due volte al giorno e scarica circa 20 file. Quindi è impossibile modificare manualmente i permessi.

È possibile modificare i diritti di lettura per una tabella in modo programmatico?

Grazie mille per qualsiasi idea!

+2

Non sono sicuro se è possibile modificare i diritti, ma se possibile, richiederà l'accesso a db come utente con autorizzazione di Amministratore o Proprietario. Quindi suggerirei che invece tu provi ad accedere direttamente come tale ad un utente, magari cambiando la tua stringa di connessione. ho il sospetto che avrai bisogno del file .MDW per quello. –

risposta

5

Ho risolto questo problema utilizzando il file system.mdw. Ho copiato questo file da "c: \ Users \ Administrator \ AppData \ Roaming \ Microsoft \ Access \" (in Win7) alla directory dell'applicazione (App_Data) e alla stringa di connessione modificata.

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);

Se ancora è impossibile leggere i dati, i comandi concessione eseguo:

"GRANT SELECT ON TABLE tblTable TO PUBLIC" 

e funziona :)