Newsgroup: it.comp.lang.visual-basic
Titolo: VB6+DAO Problemi al server

Gi� da alcuni anni utilizzo la mia procedura
di gestione produzione col mio programma
VB6/SP5 con un database access.
So che MDB non gode di molto credito
ma io non ho avuto fino ad oggi grossi
problemi.
Uno dei miei clienti tiene il database in
un server e non ha avuto problemi fino
al 4/1/2010 (indico la data esatta caso
mai il problema potesse dipendere da
quella).
Il cliente mi chiama perch� il programma
non funziona pi� bene.
Vado e scopro che ci sono degli indici
corrotti in una tabella; li aggiusto e faccio
il run del programma.
Mi da errore per versione database non
compatibile.
Poi dopo altre prove mi dice di non poter
aprire il database perch� qualcuno lo sta
modificando (chi poi? visto che il mio PC
era l'unico collegato).
Alla fine � sembrato sufficiente mettere
il database in un'altra cartella perch�
riuscisse ad aprirlo bene.
Ma poi gli indici, dopo pochi inserimenti,
si corrompevano di nuovo.
Tralascio la descrizione di altre prove fino
alla conclusione finale:
- Dopo aver messo il database su un altro
PC tutto funziona bene (almeno da qualche giorno).
- Il server non da alcun problema con altri
programmi (ci sono dentro un sacco di disegni).
Insomma non ho capito quale sia il problema
e ci sto male :-(
Qualche ipotesi plausibile?
Grazie e saluti a tutti.
Sauro 

 Qualche ipotesi plausibile?
Uso pure io la stessa accoppiata e sono interessato quasi quanto te a capire 
cosa � successo al tuo db.
Ma il compact e backup del database ogni quanto lo fai? Da programma 
intendo; non ne hai accennato.
-- 
Greg 


Ti consiglio di dare un'occhiata a questo documento: 
http://support.microsoft.com/kb/300216/en-us
In particolare "Issues to consider when you share a Microsoft Jet database".
Per disabilitare l'opportunistic locking, sul server devi modificare o 
creare questi parametri nel registry della chiave
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanManServer/Parameters
Name: EnableOpLocks
Type: REG_DWORD
Value = 0
Name: CachedOpenLimit
Type: REG_DWORD
Value = 0
L'impostazione di quei valori nel registro riduce drasticamente il problema 
della corruzione di db access condivisi in rete.
In realtï¿½ lavorando con Access in multiutenza tale possibilitï¿½ non si 
elimina del tutto, per cui ï¿½ sempre bene fare compatta&ripristina ad 
intervalli regolari.
Bye
Raf 

 Greg
Tutte le sere credo (non da programma).
Ciao Greg, Sauro 

 Raf
Ciao Raf.
Guarder� con calma quello che che mi
hai suggerito.
Cos�, a prima vista e ad intuito, capisco
che dei rischi di corruzione sono previsti.
Per� non trovo risposta alle seguenti
due domande:
Perch� per oltre due anni mai una corruzione
e adesso invece corruzioni continue?
(il cliente mi ha detto di non aver fatto nessuna
modifica nella rete o nuove installazioni di
altri programmi).
Perch� spostando il database dal server ad
un altro PC le corruzioni non si verificano
(almeno per ora) ?
Ciao Raf e grazie.
Sauro
P.S. Nel sito che mi hai indicato ci sono anche
istruzioni dettagliate di come impostare quei
parametri?
Sono proprio a digiuno in materia.

 Sono proprio a digiuno in materia.
Start-->Esegui-->REGEDIT, poi navighi fino alla cartella indicata 
(HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanManServer/Parameters).
Se i parametri EnableOpLocks e CachedOpenLimit esistono, basta fare 
doppioclic per modificarne i valori
Altrimenti devi crearli: posizionato nella cartella giusta, clic di dx sul 
pannello a dx, "Nuovo valore DWORD", inserisci nome giusto e valore...
Attento a non modificare/cancellare inavvertitamente altro nel registro, 
rischi di compromettere l'integritï¿½ del sistema.
Ciao
Raf 

 Raf
Veramente gentile.
Grazie ancora Raf.
Sauro