Spillo
2009-07-23 10:31:35 UTC
Ciao a tutti, come da oggetto, ho un problema con l'accesso simultaneo
ad un database Access da parte di due postazioni che eseguono lo
stesso programma.
In dettaglio, l'applicazione elabora un bilancio e, leggendo dalla
tabella delle operazioni contabili, scrive i record con i dati
necessari alla stampa in una tabella d'appoggio, con l'indicazione su
ogni record dell'utente che ha lanciato l'elaborazione (parliamo di
10-15 mila record a testa per una elaborazione di 1 minuto circa).
Quando due utenti lanciano l'elaborazione, può capitare che ci sia un
periodo di concomitanza di scritture nella tabella; alcune volte
capita che una delle due postazioni riceve un messaggio che indica che
la tabella è bloccata dall'altro utente.
La cosa strana è che ho provato a creare a runtime due tabelle
distinte, una per utente, in modo che gli utenti non si trovino a
scrivere nella stessa tabella, ma mi da lo stesso errore!
In pratica l'utente A scrive nella tabella A, l'utente B scrive nella
tabella B, ma all'utente B viene segnalato che la tabella B è bloccata
dall'utente A!
E' come se l'intero database rimanesse bloccato ogni tanto per qualche
istante e se in questo periodo il secondo utente vuole scrivere nella
sua tabella riceve l'errore. Nell'elaborazione singola infatti
l'avanzamento è regolare, mentre in quella con due utenti i singoli
avanzamenti fanno delle pause di 2-3 secondi per poi ripartire.
Qualche informazione sul programma:
ambiente VB6
connessione ODBC (ma ho provato anche OLEDB)
database Access 2000
pc Windows XP
Se servono altre informazioni sono a disposizione
Grazie per l'attenzione
Massimo
ad un database Access da parte di due postazioni che eseguono lo
stesso programma.
In dettaglio, l'applicazione elabora un bilancio e, leggendo dalla
tabella delle operazioni contabili, scrive i record con i dati
necessari alla stampa in una tabella d'appoggio, con l'indicazione su
ogni record dell'utente che ha lanciato l'elaborazione (parliamo di
10-15 mila record a testa per una elaborazione di 1 minuto circa).
Quando due utenti lanciano l'elaborazione, può capitare che ci sia un
periodo di concomitanza di scritture nella tabella; alcune volte
capita che una delle due postazioni riceve un messaggio che indica che
la tabella è bloccata dall'altro utente.
La cosa strana è che ho provato a creare a runtime due tabelle
distinte, una per utente, in modo che gli utenti non si trovino a
scrivere nella stessa tabella, ma mi da lo stesso errore!
In pratica l'utente A scrive nella tabella A, l'utente B scrive nella
tabella B, ma all'utente B viene segnalato che la tabella B è bloccata
dall'utente A!
E' come se l'intero database rimanesse bloccato ogni tanto per qualche
istante e se in questo periodo il secondo utente vuole scrivere nella
sua tabella riceve l'errore. Nell'elaborazione singola infatti
l'avanzamento è regolare, mentre in quella con due utenti i singoli
avanzamenti fanno delle pause di 2-3 secondi per poi ripartire.
Qualche informazione sul programma:
ambiente VB6
connessione ODBC (ma ho provato anche OLEDB)
database Access 2000
pc Windows XP
Se servono altre informazioni sono a disposizione
Grazie per l'attenzione
Massimo