2011-11-22 9 views
5

Ho un database di accesso che si trova sul server x iis in esecuzione sul server y. Una delle mie pagine web accede ai dati dal database di accesso. Se qualcuno ha il database di accesso aperto dire un utente finale sulla nostra rete le pagine web falliscono con un ... già aperto esclusivamente da un altro messaggio di errore dell'utente.Access Database già aperto esclusivamente da un altro utente

Ho creato un database di accesso locale e ho utilizzato tabelle collegate per accedere alle tabelle in questo modo. Anche ancora ottengo il già aperto esclusivamente da un altro errore utente. Se apro Windows Explorer e cerco il server x e apro il database, posso farlo senza problemi. Quindi la mia domanda è: come posso simulare lo stesso tipo di connettività al database senza che l'errore venga generato? Si tratta di autorizzazioni al database di accesso o qualcosa all'interno del mio connectiontring che mi permetterebbe di accedere al database.

Dal momento che genera l'errore durante il mio comando connection.open, sto calcolando che si tratti di un permesso o di qualcosa di aggiuntivo che devo aggiungere alla mia stringa di connessione. Ho concesso il controllo completo per IIS AppPool \ sulla directory locale in cui risiede la mia istanza locale del database di accesso, ma non sembra che faccia la differenza.

mia stringa di connessione appare come:

Private Shared connSheriff As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\serverx\directory\Access\MyDatabase.mdb;Jet OLEDB:Database Password=property;") 
+0

Sei aprire il database come amministratore? Se si sospetta la stringa di connessione, probabilmente vale la pena pubblicarla. – Simon

+0

CondSheriff condiviso privato Come nuovo OleDbConnection ("Provider = Microsoft.Jet.OLEDB.4.0; Origine dati = \\ serverx \ directory \ Access \ MyDatabase.mdb; Jet OLEDB: Database Password = proprietà;") –

+1

È possibile prendere in considerazione la codifica del proprio domanda con il linguaggio di programmazione web che stai utilizzando per raggiungere un pubblico più ampio. Inoltre, ti consiglio di inserire alcune interruzioni di riga, punteggiatura e forse altra formattazione nella tua domanda per renderla più leggibile. – HK1

risposta

1

Ci sono alcuni options within the mdb che cambiano come il database viene aperto per impostazione predefinita, questi dovrebbe essere il primo porto di scalo in particolare l'impostazione della "modalità di apertura di default" a "condiviso ".

Hai già diviso il database (tabelle di dati nel back-end condiviso, tabelle collegate e il resto nel front-end). Assicurati che ogni utente usi una copia separata del mdb front-end, altrimenti avrai problemi di blocco su questo.

C'è un interruttore della riga di comando (/ escl) che imposta la modalità esclusiva, ma è sufficiente ometterlo per aprire il db condiviso, quindi dubito che questo sia un problema.

Probabilmente già lo sanno, ma il "Shared" modificatore non ha nulla a che fare con la condivisione tra le applicazioni o gli utenti, ma condivide la variabile di connessione tra le istanze della classe (il C# equivalente è "statico")