Interconnessioni Access, VB6, .LDB

di il
5 risposte

Interconnessioni Access, VB6, .LDB

Probabilmente ne avrete parlato a iosa. Purtroppo non sono riuscito a trovare accenni a questo mio problema.
--
Ho una procedura scritta in VB6 che lavora (da anni) su un database Access 2003.
Il tutto opera su una rete con Server (windows 2003 e 2012) e Clients (windows 7, 10).
Ogni programma della procedura apre il database in modo non esclusivo (eventuali blocchi sono effettuati a programma con appositi files di lock) e chiude il database.
---
Il problema che si presenta saltuariamente e' il seguente.
Il file .LDB che normalmente si autoelimina ad ogni chiusura del DB, qualche volta rimane presente.
In esso sono evidenziati i PC che si stanno collegando al DB. Anche, pero', quelli che il DB lo hanno gia' chiuso
Mano a mano che i PC vengono spenti, scompaiono le entrate in .LDB e, alla fine dopo l'ultimo spegnimento, il file scompare.
In queste occasioni la dimensione del database access aumenta fino a raggiungere a volte il doppio della sua dimensione originaria.
Il tutto accompagnato da un decremento notevole delle prestazioni.
La soluzione e' quella di eliminare il file .LDB ma essa non e' possibile in quanto lo stesso risulta in uso ad un non meglio identificato PC (senz'altro uno di quelli evidenziati sul .LDB stesso) e non e' eliminabile.
Posso farlo solo con un programma tipo UNLOCKER.
---
Se apro UNLOCKER sul database mi dice che questo e' bloccato da "System" su un Handle che, pero', non e' presente su Task Manager (PID).
---
Non sono riuscito a capire l'utilizzo del file .LDB ne' tantomeno la causa del rallentamento e dell'incremento delle dimensioni del DB, dimensioni che ritornano normali dopo la compattazione dello stesso.

Grazie per eventuali aiuti dati dalla vostra esperienza.

Buon lavoro a tutti

5 Risposte

  • Re: Interconnessioni Access, VB6, .LDB

    Le dimensioni del file mdb aumentano per varie ragioni e le cancellazioni dei dati non contribuiscono a diminuirle dato che i dati non sono effettivamente cancellati prima di una compattazione. La compattazione è l'unico modo per rimettere a posto tutto e per questo tipo di file è consigliabile farla giornalmente.

    Per il resto (.LDB) non vedo problemi. Se i PC sono accesi e collegati al DB non vedo perché forzare la cancellazione.
  • Re: Interconnessioni Access, VB6, .LDB

    Sono pienamente consapevole che la dimensione dei file Access possa aumentare ma non nella proporzione constatata (da 196Mb a 460Mb nel giro di una giornata). Solitamente, in giornate normali passa da 196Mb a 208Mb.
    ---
    La cancellazione del .LDB e' l'unica possibilita' che ho per ridare sprint alla procedura.
    Perche', in tali occasioni, il caricamento di una griglia contenente 1000 Clienti, passa da 1 secondo a 30/40 secondi.
    ---
    Grazie, comunque, per la sua opinione.

    Buon lavoro
  • Re: Interconnessioni Access, VB6, .LDB

    Perché dici che è una dimensione anomala? Hai statistiche? Sai esattamente cosa è stato fatto in quel giorno?
    Inserire 1000 clienti in un solo colpo non è una cosa banale per un file Access.

    Se il file LDB esiste perché altri sono collegati, non è molto raccomandabile eliminarlo in maniera forzosa. Può succedere che i client connessi corrompano i dati se scrivono in maniera concorrente.
  • Re: Interconnessioni Access, VB6, .LDB

    Le operazioni che vengono compiute nella giornata sono grosso modo sempre le stesse.
    Comprendono nuovi inserimento di Clienti, Ordini, Materiali, Cancellazioni e riaggiornamento di dati dall'esterno, etc.
    Per queste attivita' il DB puo' aumentare nella giornata da 196 a 208Mb (ad esempio).
    Riesco ad essere abbastanza preciso perche', la sera, il DB viene copiato con nomi diversi secondo i giorni e, nello stesso tempo viene compattato.
    Poiche' la crescita del DB dipende essenzialmente da inserimenti e cancellature di records, lo spazio da compattato varia di poco (un giorno puo' essere 196 Mb, il giorno successivo, 198, 203, etc.).
    ---
    I 1000 clienti di cui parlo, non sono inseriti simultaneamente nel DB. E' il tempo di caricamento in una griglia di programma di 1000 clienti gia' presenti sul DB per effettuare la ricerca.
    ---
    Corretto quello che dici circa l'eliminazione del .LDB. Ma e' il solo sistema per riuscire a fare operare gli utenti senza costringerli a riavviare tutti i PC compresi i server.
  • Re: Interconnessioni Access, VB6, .LDB

    Vittorio1946 ha scritto:


    Le operazioni che vengono compiute nella giornata sono grosso modo sempre le stesse.
    Comprendono nuovi inserimento di Clienti, Ordini, Materiali, Cancellazioni e riaggiornamento di dati dall'esterno, etc.
    Per queste attivita' il DB puo' aumentare nella giornata da 196 a 208Mb (ad esempio).
    Se è aumentato di molto, evidentemente ci sono state molte più operazioni. Controlla se la cosa si ripete.
    Corretto quello che dici circa l'eliminazione del .LDB. Ma e' il solo sistema per riuscire a fare operare gli utenti senza costringerli a riavviare tutti i PC compresi i server.
    E' una operazione pericolosa per i tuoi dati, io non la farei.

    Penserei a migrare tutto a SQL Server o altro DBMS.
Devi accedere o registrarti per scrivere nel forum
5 risposte