Discussione:
Accessi simultanei a database Access
(troppo vecchio per rispondere)
Spillo
2009-07-23 10:31:35 UTC
Permalink
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
Nicola Ottomano
2009-07-23 12:20:30 UTC
Permalink
Post by Spillo
Ciao a tutti, come da oggetto, ho un problema con l'accesso simultaneo
ad un database Access
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.

Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.

La soluzione è quella di passare a db più orientati alla multi utenza
come SQL Server (2005/2008) o, nel caso tu voglia lavorare su file
singolo, passare a SQL Server Compact edition o l'ottimo (e leggero!)
SQLite.


Nicola
Spillo
2009-07-23 12:55:59 UTC
Permalink
Post by Nicola Ottomano
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.
Grazie per la risposta, ma il nostro programma gira da anni su access
in multiutenza con un unico database...
Il lock di cui parli serve ad impedire rinomina e cancellazione del
file, ma non l'accesso ai dati.
Il problema sembra sorgere solo nel caso di elaborazioni molto pesanti
di scrittura contemporanee (infatti fino ad ora non ci era mai
successo).

La mia impressione è che la connessione tra vb e access non memorizzi
i record singolarmente, ma memorizzi i record in un buffer da
trasferire periodicamente al database. Di conseguenza la scrittura dei
record provoca un blocco del database di qualche secondo.
Ma questa è solo una teoria....

Massimo
Wodka40[Google]
2009-07-23 14:27:40 UTC
Permalink
Post by Spillo
Post by Nicola Ottomano
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.
Grazie per la risposta, ma il nostro programma gira da anni su access
in multiutenza con un unico database...
Il lock di cui parli serve ad impedire rinomina e cancellazione del
file, ma non l'accesso ai dati.
Il problema sembra sorgere solo nel caso di elaborazioni molto pesanti
di scrittura contemporanee (infatti fino ad ora non ci era mai
successo).
La mia impressione è che la connessione tra vb e access non memorizzi
i record singolarmente, ma memorizzi i record in un buffer da
trasferire periodicamente al database. Di conseguenza la scrittura dei
record provoca un blocco del database di qualche secondo.
Ma questa è solo una teoria....
Massimo
Scusami eh...sarà il caldo ma stasera non mi riesce restare "neutro"!
Se sono "anni" che gira multi utente....come mai proprio "ora" noti
una cosa del genere?
Forse perchè l'hai sempre venduto mono utente?
Forse perchè l'hanno sempre USATO mono utente?

Usi ODBC hai detto.....e che strategia di accesso multi utente?
API odbc?
DAO?
RDO?
ADO?

ossia...il programma come fà a gestire i conflitti?
Spera in Dio?

E' abbastanza normale che se io sto scrivendo un record...un altra
scrittura vada in conflitto! Una lettura no...dipende dalla tecnologia
(ossia dal cursore usato...un cursore dinamico aspetta...un altro tipo
no! a costo di leggere dati errati!....è per questo che ci sarebbero
trigger semafori e amenità varie in db più "seri")

Inoltre...access è un database COMODO perchè sta in un file
soltanto...ma non puoi chiedere ad una 500 di correre contro una F1!!!
Io ho fatto tanti programmi con access....per piccole imprese....va
benissimo!
Se i posti di lavoro salgono...ah beh...anche le esisgenze salgono
UNA SU TUTTE
se si baca il file mdb?
ti tocca implementare un sistema di backup nel tuo programma...
db seri hanno lo strumento di backup incorporato....
E se vuoi tornare indietro ad alcune transazioni?(Una scrittura
contabile ad esempio)...diventa complicato in access..etc etc

Se uno fa un gestionale prima o poi ci si schianta contro queste
cose!...certo se uno lo fà pagare 80 Euro....non ci possiamo aspettare
tante finezze!

Inoltre nello specifico....
il problema lo hai prchè hai MOLTI records da passare
il driver ODBC comincia a raccogliere i dati della query...e te ne
passa "un pò"....quando ti sposti e ne chiedi ancora "te ne serve un
altro pò"...e così via fino alla fine....
Però quei record per una frazione di tempo sono bloccati...e se il
driver odbc è fermo ad aspettare le tue richieste....
Quei record sono bloccati per altre richieste e falliscono....
Ecco perchè vedi andare a singhiozzo!
Query piccole non ti darebbero questo problema!

Il consiglio di Nicola non era assolutamente campato in aria!
Passa ad un db più "serio"....il tuo lavoro ne acquisterà in
prestazioni e manutenibilità!!!
E butta via ODBC!
Spillo
2009-07-23 15:48:51 UTC
Permalink
Non mi aspettavo di scatenare un pandemonio del genere!

x Wodka40: tu sei il motivo per cui non scrivo mai nei newsgroup ma mi
limito a leggere per imparare: perchè dovrei fare una semplice (mica
tanto in realtà) domanda per avere una risposta che io considero
offensiva (anche se magari dirai che scherzavi)?
Visto che non conosci nulla del nostro applicativo, che bisogno c'era
di lanciarti in certe affermazioni?
So benissimo che se usassi un database più seri avrei sicuramente
prestazioni migliori e maggiore sicurezza, ma purtroppo non abbiamo
ancora nè i mezzi, nè la struttura per migrare il gestionale. Per il
nostro target di clientela access va più che bene e ci è capitato solo
ora semplicemente perchè, nelle installazioni attuali, è raro (leggasi
non è mai successo) che due postazioni lancino contemporaneamente due
elaborazioni pesanti contemporaneamente. E' capitato una volta e mi è
venuto lo scrupolo di risolvere il problema prima che si ripresenti e
per capire un po' di più dell'accesso ai dati.
Sono 10 anni che programmo in vb e non ho mai fatto un corso:
fortunatamente per lavorare non è sempre necessario essere certificati
o super specializzati; ci si accontenta di risolvere i problemi
quotidiani e portare a casa la pagnotta! Sicuramente i miei programmi
non sono perfetti, ma fanno il loro lavoro e i clienti sono contenti,
questo per me è sufficiente.

Per la cronaca, ho risolto il problema utilizzando il cursore statico
e utilizzando un recordset per eseguire i comandi sql (INSERT e
DELETE) invece del metodo Execute della connessione.

Grazie a tutti
Massimo
Wodka40[Google]
2009-07-23 16:26:06 UTC
Permalink
Post by Spillo
Non mi aspettavo di scatenare un pandemonio del genere!
x Wodka40: tu sei il motivo per cui non scrivo mai nei newsgroup ma mi
limito a leggere per imparare: perchè dovrei fare una semplice (mica
tanto in realtà) domanda per avere una risposta che io considero
offensiva (anche se magari dirai che scherzavi)?
Visto che non conosci nulla del nostro applicativo, che bisogno c'era
di lanciarti in certe affermazioni?
So benissimo che se usassi un database più seri avrei sicuramente
prestazioni migliori e maggiore sicurezza, ma purtroppo non abbiamo
ancora nè i mezzi, nè la struttura per migrare il gestionale. Per il
nostro target di clientela access va più che bene e ci è capitato solo
ora semplicemente perchè, nelle installazioni attuali, è raro (leggasi
non è mai successo) che due postazioni lancino contemporaneamente due
elaborazioni pesanti contemporaneamente. E' capitato una volta e mi è
venuto lo scrupolo di risolvere il problema prima che si ripresenti e
per capire un po' di più dell'accesso ai dati.
fortunatamente per lavorare non è sempre necessario essere certificati
o super specializzati; ci si accontenta di risolvere i problemi
quotidiani e portare a casa la pagnotta! Sicuramente i miei programmi
non sono perfetti, ma fanno il loro lavoro e i clienti sono contenti,
questo per me è sufficiente.
Per la cronaca, ho risolto il problema utilizzando il cursore statico
e utilizzando un recordset per eseguire i comandi sql (INSERT e
DELETE) invece del metodo Execute della connessione.
Grazie a tutti
Massimo
Ascolta nanni....se mi provochi mo scoppia il flame!

Perchè uno ha un impiegato o due....gli fai un programma di merda???
E all'industria con 10 impiegati uno con i controcazzi????
Ma che cavolo di professionalità è?????

Io ti consiglio di usare uno standard e di adottare sempre quello!
Ne guadagli in manutenzione, malox e tempo....tutte cose che si
traducono in soldi! Mica balle!

Le skill ne convengo servono a poco se dietro non c'è la testa!
Però la testa anche se non "qualificata" ci deve sempre essere!

Tanto per dire....
se tu passi per connection.execute....vai a vederti le discussioni e
le faq di 3 4 5 anni fà......
connection.execute funziona lato server...con i pro ed i contro....

se ora mi risolvi con un cursore statico ed un recordset...c'era da
chiedersi che cosa usavi prima (se usavi una connessione impostata
lato server i cursori molto probabilmente erano dinamici ed allora era
NORMALE e CORRETTO che si bloccassero...anche se ti mangiano risorse
in modo spaventoso!)...se sai la differenza fra client e server...(che
meno male dotNet ha sistemato una volta per tutte)...etc etc

e la differenza fra update e batchupdate.....

il fatto che tu programmi per portarti a casa la pagnotta non ti
esimerebbe da essere professionale e fornire un prodotto che rispecchi
una funzionalità ragionevolmente esente da bachi!
Ossia tradotto....debug continuo....finchè il prodotto non è
stabile....e se è anni che lo vendi e te ne accorgi solo ora...ma che
cazzo di debug hai fatto??? Non è per sindacare...è capitato anche a
me...un prodotto fatto con i piedi e controvoglia...fatti debuggare
sul campo dal cliente in puro stile microsoft! (eheheheh)

In quanto all'investimento.....

se vuoi rimanere in VB6

ADO + Sqlexpress....GRATIS
ADO + MySQL.....gratis

multi utenza vera....lock come vuoi tu...stored procedure...e tanto
altro

Ora ti ho punto nel vivo......
non mi scuso...ne ho scherzato.....

se sei intelligente....e lugimirante.....una volta sbollita la rabbia
e dopo avermi mandato a fanculo....rileggi quello che ti ho detto e
parti da li per migliorare la tua applicazione e la tua cultura
informatica.....

Saluti....


p.s.
Non sei mica il figlio del lattaio vero???
;o)
Stefano Ferrari
2009-07-24 13:31:13 UTC
Permalink
Post by Wodka40[Google]
ADO + Sqlexpress....GRATIS
Si, ok ...
Post by Wodka40[Google]
ADO + MySQL.....gratis
mhhh ... sei sicuro?
Mi risulta che sia gratis se tu rialasci il tuo programma sotto licenza
GPL, oppure se non devi distribuire la tua applicazione (ad esempio un
servizio, o sito, web che gira sui tuoi server) ma se fai
un'applicazione commerciale closed source credo che la licenza si debba
pagare.
Oh, poi magari mi sbaglio, non son andato ad approfondire, sono
reminescenze.

ciao
stefano
Nicola Ottomano
2009-07-24 13:44:29 UTC
Permalink
Post by Stefano Ferrari
Post by Wodka40[Google]
ADO + Sqlexpress....GRATIS
Si, ok ...
Post by Wodka40[Google]
ADO + MySQL.....gratis
mhhh ... sei sicuro?
Mi risulta che sia gratis se tu rialasci il tuo programma sotto licenza
GPL, oppure se non devi distribuire la tua applicazione (ad esempio un
servizio, o sito, web che gira sui tuoi server) ma se fai
un'applicazione commerciale closed source credo che la licenza si debba
pagare.
Oh, poi magari mi sbaglio, non son andato ad approfondire, sono
reminescenze.
Confermo. E' gratis solo per programmi liberi.
Gli unici utilizzabili gratuitamente anche per scopi commerciali sono MS
SQL Server Express e Firebird.

Ovviamente mi riferisco a dbms client-server

Per dbms a singolo file ci sono i SQL Server Compact Edition e l'ottimo
SQLite


Nicola
Nicola Ottomano
2009-07-23 14:31:39 UTC
Permalink
Post by Spillo
Post by Nicola Ottomano
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.
Grazie per la risposta, ma il nostro programma gira da anni su access
in multiutenza con un unico database...
Il lock di cui parli serve ad impedire rinomina e cancellazione del
file, ma non l'accesso ai dati.
Il problema sembra sorgere solo nel caso di elaborazioni molto pesanti
di scrittura contemporanee (infatti fino ad ora non ci era mai
successo).
E'quello che dicevo. Mi pare di capire che gli utenti possano lanciare
la stessa elaborazione che impatta sulla stessa tabella. Quindi vanno in
conflitto sui vari record. O ho capito male?

Nicola
andrea palazzi
2009-07-23 14:17:31 UTC
Permalink
"Nicola Ottomano"
Post by Nicola Ottomano
Post by Spillo
Ciao a tutti, come da oggetto, ho un problema con l'accesso simultaneo
ad un database Access
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
eh?
nicola, da te non me l'aspettavo.
Post by Nicola Ottomano
Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.
access con ado può creare *vari tipi* di lock.
un mio mdb su un server sta girando con 5 accessi contemporanei da un
abbastanza bel po'. mai crollato.
lupo, se ricordo, di accessi cont ne aveva una quarantina senza particolari
problemi.

che ci sia di meglio non discuto.
ma se dai informazioni, p.f., dalle corrette.

oppure candidati anche tu :PPP

ciao
Nicola Ottomano
2009-07-23 14:25:42 UTC
Permalink
Post by andrea palazzi
"Nicola Ottomano"
Post by Nicola Ottomano
Post by Spillo
Ciao a tutti, come da oggetto, ho un problema con l'accesso simultaneo
ad un database Access
Alt: "Accesso Simultaneo" e "database Access" non possono convivere
nella stessa frase senza una negazione.
eh?
nicola, da te non me l'aspettavo.
azz... beccato da pal. :-P
Post by andrea palazzi
Post by Nicola Ottomano
Il db crea un lock quando viene aperto, tale per cui non è accessibile
da altre postazioni.
access con ado può creare *vari tipi* di lock.
un mio mdb su un server sta girando con 5 accessi contemporanei da un
abbastanza bel po'. mai crollato.
lupo, se ricordo, di accessi cont ne aveva una quarantina senza
particolari problemi.
Mah, io avevo capito che entrambi gli utenti dovevano lanciare la stessa
elaborazione sulla stessa tabella. Quindi, correttamente, andavano a
rompersi le scatole a vicenda sui vari record. O capito male?


Nicola
Stevie
2009-07-23 18:58:51 UTC
Permalink
Post by Nicola Ottomano
Mah, io avevo capito che entrambi gli utenti dovevano lanciare la stessa
elaborazione sulla stessa tabella. Quindi, correttamente, andavano a
rompersi le scatole a vicenda sui vari record. O capito male?
A quanto ho capito io questa era la situazione originale: una tabella temporanea
contenente i dati per la stampa, e due utenti che tentano di scriverci una marea
di record.

Mi pare, però, che nel post originale Spillo dica di aver provato a creare 2
tabelle distinte, quindi la domanda che faceva lui era: 'come mai due utenti che
agiscono su tabelle differenti ricevono un messaggio di tabella in stato di lock'?

A meno che non sia stato io a capire male.

E comunque confermo, anche qui a Vicenza Access si fa usare da più d'un
utentesso al colpo ;)
--
S.
Spillo
2009-07-24 01:42:55 UTC
Permalink
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perchè sono educato (il tuo
post non lo rileggo perchè con i maleducati non ci parlo).

Grazie ancora a tutti per l'attenzione.
Wodka40[Google]
2009-07-24 07:23:24 UTC
Permalink
Post by Spillo
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perchè sono educato (il tuo
post non lo rileggo perchè con i maleducati non ci parlo).
Grazie ancora a tutti per l'attenzione.
Peccato..perchè in mezzo ci avresti trovato informazioni che si
sarebbe tramutate in denaro!
Contento te....ciao bello!
elmariachi
2009-07-24 08:10:11 UTC
Permalink
Penso tu abbia enfatizzato un po troppo il suo post, fai tesoro dei suoi
consigli.
E' sempre facile accendere flame per nulla, wodka40 è spesso molto schietto
e diretto ma sicuramente esperto in programmazione.



"Spillo" <***@gmail.com> ha scritto nel messaggio news:442cce5e-ef83-418a-a692-***@d32g2000yqh.googlegroups.com...
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perchè sono educato (il tuo
post non lo rileggo perchè con i maleducati non ci parlo).

Grazie ancora a tutti per l'attenzione.
Luca D
2009-07-24 08:49:38 UTC
Permalink
Post by elmariachi
Penso tu abbia enfatizzato un po troppo il suo post, fai tesoro dei suoi
consigli.
E' sempre facile accendere flame per nulla, wodka40 è spesso molto schietto
e diretto ma sicuramente esperto in programmazione.
Il problema è che risponde *sempre* così, e tipicamente, insieme ai
consigli, infila dentro apprezzamenti e "consigli di vita" non sempre
richiesti/pertinenti.
Leggendolo da anni, uno lo sa, riconosce il suo classico stile "stream
of consciousness", e non ci si bada troppo, ma lui appena arrivato si
trova davanti una risposta così, giustamente un po' si incazza...
Wodka40[Google]
2009-07-24 09:14:13 UTC
Permalink
zac
Post by Luca D
Leggendolo da anni, uno lo sa, riconosce il suo classico stile "stream
of consciousness", e non ci si bada troppo, ma lui appena arrivato si
trova davanti una risposta così, giustamente un po' si incazza...
Se ti incazzi sono cazzi tuoi!

Ho 46 anni e sono esperto di alcune cose della vita...non di tutte per
carità!
Nel mondo reale , qui da me, NON TROVI il freddo algido lombardo che
ti risponde alla norvegese dandoti la SOLA essenziale informazione e
lasciandoti spaesato e alla fine ignorante quanto prima!
Trovi gente che "ti svernicia" alla prima mancanza....
ti dirò che VA BENE così!

Se io sto nel mio guscio (e quanto è facile con internet crearselo a
propria imagine e somiglianza) tendo ad avere una percezione distorta
della realtà!
Contemporaneamente....chiamami hippy, fricchettone, ragazzo del
63....come vuoi...io ho una ALTA concezione della community!
Qui si discute non per fare help desk....ma per migliorare il nostro
lavoro collettivo....
ovvio utopia...ma almeno bisogna provarci!

IO mi faccio mille interrogativi....sono sempre in discussione con me
stesso...sempre alla ricerca di nuovo e conoscenza....così mi
elevo...cresco culturalmente e socialmente....
ed internet è un mezzo uno dei tanti!

MI INCAZZO ALLA MORTE...quando vedo colleghi ripiegati su stesi nel
loro mondo di merda che inevitabilmente contamina anche il mio...e
probabilmente anche il vostro....

Esempio

Se una azienda mi commissiona un lavoro....faccio tutti i passaggi
tipici e rimetto il prezzo.
ad es. 800
COSTANTEMENTE
sono scavalcato da "colleghi del cazzo" che fanno programmi bacati per
500 (l'ordine di grandezza è supergiù quello...25/35% in meno)
Questi qui fanno un analisi buona ed una implementazione alla cazzo di
cane (se paghi uno junior a forfait 600 Euro il mese che vuoi di
più???)

MA SICCOME siamo in tempi di crisi....il manager acquista il programma
bacato...e se ne fotte degli impiegati!

Notare che questo è vieppiù più vero nel pubblico dove le aste/gare al
ribasso provocano la sabbia nei viadotti e programmi informatici
inusabili...e ho esperienza diretta di quanto affermo

Penso che sia MIO dovere bacchettare chi programma con i piedi e che
si accorge solo dopo anni che l'applicazione ha pesanti limitazioni!
Purtroppo gli informatici sono miopi...non hanno voluto un albo che
vincolasse a requisiti ed ad un tariffario minimo...ergo...tutti sono
informatici e inquinare il mercato solo sapendo mettere 2 data control
in croce su un form!
Inutili le balle che la qualità alla lunga paga:
un manger pubblico/privato è vincolato al bilancio e spesso
all'assemblea dei soci non ha soldi e deve (DEVE) trovare economie
dappertutto!

Mi sto defilando sempre più...e penso di mettere su un ristorante
etnico "Dal Wodkino incazzato"

ecco la ragione del perchè ogni tanto parto per la tangente....

stò facendo un favore a chi riceve la mia "lavata di capo"....qualcuno
dopo un po lo appezza e mi dice grazie (pochissimi)...altri apprezzao
e no ringraziano (ingrati)......pochi si offendono e non capiscono
quello che dico (sono i figli del lattaio che hanno messo su una ditt
di informatica)

...e con questo....ho ridetto per l'enesima volta perchè sono un
toscanaccio!!!
Ovvia!
greg
2009-08-04 18:24:36 UTC
Permalink
Post by Wodka40[Google]
Se ti incazzi sono cazzi tuoi!
Ho 46 anni e sono esperto di alcune cose della vita...non di tutte per
carità!
Nessuno risponde a questo, provo io!
Post by Wodka40[Google]
MA SICCOME siamo in tempi di crisi....il manager acquista il programma
bacato...e se ne fotte degli impiegati!
Notare che questo è vieppiù più vero nel pubblico dove le aste/gare al
ribasso provocano la sabbia nei viadotti e programmi informatici
inusabili...e ho esperienza diretta di quanto affermo
Ti tiro le orrecchie! Ma dove diavolo vivi? Ho capito..... la toscana! Ma è
proprio così diversa?
Nell'algida Lombardia (pubblica) come nella profonda Calabria o Puglia o
Sicilia, ma anhe il Piemonte, non funziona come da te.
Sembrerebbe che funzioni al contrario.
Si compra il soft da quella ditta, punto e basta.
Non importa manco che soft sia, si compra il suo soft, qualsiasi cosa
faccia.
E se proprio la ditta non ha nessun soft è sufficiente che emetta una
fattura per un parere sulla necessita di un nuovo software.
Qualche centinaio di migliaia di euro, non di piu.
Fattura ripetibile, come le ricette (questa non sapevi, ammettilo)
Post by Wodka40[Google]
ecco la ragione del perchè ogni tanto parto per la tangente....
stò facendo un favore a chi riceve la mia "lavata di capo"....qualcuno
dopo un po lo appezza e mi dice grazie (pochissimi)...altri apprezzao
e no ringraziano (ingrati)......pochi si offendono e non capiscono
quello che dico (sono i figli del lattaio che hanno messo su una ditt
di informatica)
Qui concordo 100% (forse perche non c'entra il pubblico)
Un pubblico grazie a te, ad Albe, ad hal961, a Lupo....e mi scuso con chi
dimentico, ma mi avete dato tanto, soprattutto con le icnazzature o le
mancate risposte.
--
Greg
Paperino
2009-07-24 10:44:31 UTC
Permalink
"Spillo" ha scritto
Post by Spillo
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perchè sono educato (il tuo
post non lo rileggo perchè con i maleducati non ci parlo).
Proprio uno Spillo si deve incavolare perché viene punto ? ;-P

Fidati: "quelli" non sono punzecchiamenti, sono consigli, e tu
non sai quanto valgono. Il miglior augurio che ti posso fare
è di arrivare a capirlo.

Bye, G.
Stevie
2009-07-24 11:23:36 UTC
Permalink
Post by Spillo
Ringrazio Stevie per l'appoggio (il problema era esattamente quello)
mentre a Wodka40 un fanculo lo risparmio perchè sono educato (il tuo
post non lo rileggo perchè con i maleducati non ci parlo).
Mannò.

E' che Wodka ha un modo di scrivere che a volte (no: spesso. Non te la prendere,
Wo'!) può suonare molto irritante.

Solo che probabilmente frequenti poco questo NG (o sei proprio nuovo) e non lo sai.

Non sto difendendo nessuno eh, nemmeno a me piace il tono. Però cerca di
cogliere quanto di buono c'è nei post di ognuno, a prescindere dal tono.

Rovinarsi il fegato per 'ste minchiate non ha senso.
--
S.
Paperino
2009-07-24 10:45:47 UTC
Permalink
"andrea palazzi" ha scritto
[CUT]
Post by andrea palazzi
oppure candidati anche tu :PPP
Io voto lui:
Loading Image...

Bye, G.
Rafunk
2009-07-23 14:53:29 UTC
Permalink
Post by Spillo
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.
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
So che ogni tanto bisogna fare sì che il Jet Engine "rinfreschi" i locks,
specie se gli accessi alle tabelle avvengono all'interno di cicli
computazionali piuttosto pesanti.
Quindi, se usi ADO, invocando JRO.RefreshCache:
http://msdn.microsoft.com/en-us/library/bb237216.aspx

Se usi DAO, mi pare sia DBEngine.Idle:
http://msdn.microsoft.com/en-us/library/bb221047.aspx

Bye

Raf
elmariachi
2009-07-23 15:45:20 UTC
Permalink
la cosa mi interessa, e se usi ADO.Net ?
Post by Rafunk
So che ogni tanto bisogna fare sì che il Jet Engine "rinfreschi" i locks,
specie se gli accessi alle tabelle avvengono all'interno di cicli
computazionali piuttosto pesanti.
http://msdn.microsoft.com/en-us/library/bb237216.aspx
http://msdn.microsoft.com/en-us/library/bb221047.aspx
Bye
Raf
Wodka40[Google]
2009-07-23 16:12:44 UTC
Permalink
Post by elmariachi
la cosa mi interessa, e se usi ADO.Net ?
ehm ehm ehm
in ado.net sei SEMPRE disconnesso
pensala sempre come un cursore static (se proprio non riesci a fare a
meno dei cursori)
elmariachi
2009-07-24 07:58:06 UTC
Permalink
Chiaro, ma dopo aver aggiornato il db con il dataadapter non si passa per la
cache per 5 secondi circa...secondo me si perchè noto spesso un ritardo
nella visibilità dei dati.
Post by Wodka40[Google]
Post by elmariachi
la cosa mi interessa, e se usi ADO.Net ?
ehm ehm ehm
in ado.net sei SEMPRE disconnesso
pensala sempre come un cursore static (se proprio non riesci a fare a
meno dei cursori)
GDG
2009-07-25 17:42:08 UTC
Permalink
Jet 4.0 (aka il motore DB di default usato da Access) fa il lock di pagina
(4096 bytes). Se in una pagina ci stanno più record ed un record è lockato
tutti i record di quella pagina sono lockati.

Chiaro?
Spillo
2009-07-25 22:18:47 UTC
Permalink
Post by GDG
Jet 4.0 (aka il motore DB di default usato da Access) fa il lock di pagina
(4096 bytes). Se in una pagina ci stanno più record ed un record è lockato
tutti i record di quella pagina sono lockati.
Chiaro?
Ecco la risposta che volevo!
E a questo punto una curiosità: la pagina è unica per il database
(quindi contiene i record di tutti gli utenti connessi) o ogni utente
ha la sua?
Se non hai voglia non rispondermi, mi andrò a cercare la
documentazione quando rientro in ufficio (a quest'ora non mi va di
cercare); se invece hai la risposta pronta sono tutto orecchi!
Grazie
Luca D
2009-07-26 11:17:30 UTC
Permalink
Post by Spillo
Post by GDG
Jet 4.0 (aka il motore DB di default usato da Access) fa il lock di pagina
(4096 bytes). Se in una pagina ci stanno più record ed un record è lockato
tutti i record di quella pagina sono lockati.
Chiaro?
Ecco la risposta che volevo!
E a questo punto una curiosità: la pagina è unica per il database
(quindi contiene i record di tutti gli utenti connessi) o ogni utente
ha la sua?
Visto che il database contiene *UN* set di dati, il lock è relativo a
tutto il DB (lock "per utente" che senso avrebbe? esiste apposta per
evitare scritture concorrenti in conflitto...)
Loading...