Newsgroup: it.comp.lang.visual-basic
Titolo: copia mdb

Salve!
Se faccio una copia di un DataBase .mdb aperto e durante la copia
avvengono delle modifiche, cosa può succedere alla copia?
Può risultare corrotta oppure solo non aggiornata? 
Grazie in anticipo.
pinco_pallo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Può risultare corrotta oppure solo non aggiornata?
Qualunque cosa capiti, non fidarti, nel modo più assoluto.
Le copie si fanno a bocce ferme... per tutto il pacchetto dei database che
possono essere anche correlati fra loro

 possono essere anche correlati fra loro
Lo so. Questa è una copia 'dinamica' automatica.
Le modifiche non sono frequenti, una ogni diversi secondi, senza momenti
di quiete garantita. La copia dovrebbe avvenire una volta al giorno circa.
Ho pensato di fare due copie consecutive, e accettarle solo se uguali una
all'altra, altrimenti ripetere il tentativo fino a quando si riesce ad
averle uguali. Ma mi sembra un po' eccessivo...
Ciao 


 averle uguali. Ma mi sembra un po' eccessivo...
Oltre che eccessivo (e senza sicurezza che questi tentativi possano mai
avere esito positivo), mi sembra anche un peletto assurdo. Secondo me non
c'è verso.
A parte che il FileCopy s'arrabbia se il file è in uso (dovresti cioò usare
altri metodi, come una Get/Put binaria), ma la copia di un qualsiasi file
può essere fatta solo se il file, per l'intera durata dell'operazione, non è
utilizzato da alcuno. Che succede, infatti, se dopo la copia fai la
verifica, leggi 10000 bytes e sono uguali. Prosegui e arrivi alla fine.
Bene, il file è identico. No, non necessariamente se nel frattempo i bytes
già controllati sono stati modificati...
Ovviamente mi riferisco a file "normali" (quale è un MDB). I db di SQL
Server possono essere copiati mentre sono in uso, ma non credo proprio che
lo si possa fare senza usare le funzioni di SQL Server stesso, nè credo che
vengano copiati i file fisici... nè, per finire, io mi fiderò mai, anche se
più d'uno, qui, lo fa regolarmente.
Inoltre, come dicevo, pensa di avere due database: uno che contiene i
clienti e uno le fatture. Che succede se tu copi il primo, viene creato un
nuovo cliente e una nuova fattura. Copi il secondo e questo conterrà un
riferimento a un cliente che sulla tua copia del primo non c'è.
No.

 riferimento a un cliente che sulla tua copia del primo non c'è.
E' vero. Fortunatamente non ho DataBase correlati.
Forse, ma dovrei pensarci meglio, occorrerebbe fare il primo kit di copie,
poi fare il secondo kit di copie e poi confrontare i due kit di copie.
Un'alternativa alle 2 copie potrebbe essere il riversamento record per
record dal DataBase in uso a quello copia. Ma anche in questo caso avendo
più tabelle non sono sicuro che tutto vada sempre liscio. O no?
Grazie. Ciao.


 più tabelle non sono sicuro che tutto vada sempre liscio. O no?
No, secondo me la sicurezza non c'è mai e, ripeto, non vedo nessuna
possibilità che non sia quella di fermare e chiudere tutto. Non consiglierei
nemmeno una routine che verifica la presenta di un certo flag (o file) che
dice "devo fare le copie, tutti fermi", perchè, per semplice che sia da
realizzare, in quanti punti deve essere richiamata? E che succede alle
transazioni "lunghe" iniziate e non concluse?