Newsgroup: it.comp.lang.delphi
Titolo: [db sql] caduta di corrente

ciao a tutti, cosa succede nei normali db sql quando cade la corrente o per 
qualche motivo su un client non viene arrestato correttamente... su paradox 
esistono tool di reindex, sui db tipo firefox, mysql, ecc. cosa avviene?
Simo 

esistono tool di reindex, 
Paradox non č un server SQL, č file-based e la corruzione dei dati č
molto piů critica.  Teoricamente, puň succedere di tutto.


E' un po' complicato da descrivere in poche parole, per ora accontentati 
di questa spiegazione breve e imprecisa!
Al riavvio del server parte una procedura di recovery: viene esaminato 
il transaction log dei vari DB e in base alle informazioni memorizzate 
si cerca di riportare i database ad uno stato stabile, eseguendo il 
rollback delle transazioni incomplete e il rollforward di quelle che 
sono gia' complete ma senza commit.
*In teoria* in questo modo le tabelle e gli indici non dovrebbero mai 
scassarsi e non dovrebbe essere necessario fare un reindex se non per 
ragioni di performance. Poi si sa che in realta' qualche problema capita 
  sempre!
ciao
Giacomo

grazie per le risposte... la domande nasce perchè dovendo spostare un 
applicazione da paradox (file based) a un sistema sql e avendo a che fare 
con utenti molto ma molto distratti e di basso livello culturale sto 
valutando come evitare disastri..
ma questi tool di recovery sono extra o sono spesso dentro il motore??? 
anche perchè l'80% dovrà usarli in situazioni singole (1 pc con windows xp)
Simone 

ma questi tool di recovery sono extra o sono spesso dentro il motore??? 
Fanno parte del "sistema" database di solito, ma il modo in cui il
recovery si innesca dipende molto da db a db.
In ogni caso, in quanto a corruzione dati, qualsiasi db č meglio di
Paradox ;-)


Sono dentro al motore. Il server si preoccupa di garantire la stabilita' 
dei dati quindi per l'utente l'impressione e' che i dati siano solo piu' 
sicuri e stabili, con meno errori di tabelle corrotte e meno manutenzione.
Attento pero' che di solito lavorare con un server SQL porta del lavoro 
in piu' rispetto ai file paradox, ad esempio se hai bisogno di farti 
mandare i file del cliente (o devi mandarli tu a lui), con i file 
paradox basta zippare la cartella e hai risolto, con il server sql e' un 
pochino piu' complesso. In generale poiche' il file del DB e' sotto il 
controllo completo del server se vuoi lavorarci sopra (fare un backup o 
altro) devi passare attraverso il server.
ciao
Giacomo

altro) devi passare attraverso il server.
...e in generale quasi tutti i server hanno utility per fare dei
backup a caldo del DB...

beh ho già usato interbase e mssql, quindi  per il backup sicuramente devo 
prevedere un utility che mi stoppa il db esegue backup e me lo automanda via 
email o via ftp... però la mia paura era che se un cliente per qualche 
strano motivo mi spegne pc, lavora su un supporto esterno e mi stacca cavo 
usb o firewire, ecc. non mi deve rovinare il database e sopratutto non mi 
deve chiamare perchè non si apre (anche se consiglio di fare backup,ecc. e 
anche se sicuramente farò un backup automatico su hd)
Simo 

ora però l'altra domanda che sorge spontanea... se ho 30 tabelle paradox, il 
metodo piu' veloce per trasformarle in create sql senza perderci giornate 
intere??? conoscete qualche tool tipo quello di interbase che da db mi 
genera sql?
Simo 

ho provato a installare postgresql... tramite datapump di delphi6 dopo aver 
definito il db e aver collegato l'odbc automaticamente mi ha generato le 
tabelle leggendole dall'alias bde di paradox!!! grandioso
Simo 

email o via ftp... 
Non serve fermare il DB.  Come ho già detto, è possibile quasi sempre
fare un "hot backup".

genera sql?
Io ne avevo scritto uno.  Perso i sorgenti perň :-(... 
Vedi se sei in grado di leggere la tua base dati con un tool del tipo
ERWin e poi da esso generale lo script SQL per Interbase.

tabelle leggendole dall'alias bde di paradox!!! grandioso
...e questo può andare bene per creare la struttura di base, però
quando hai a che fare con un RDBMS come PostgreSQL è bene riuscire ad
utilizzare anche l'integrità referenziale.  Se hai delle tabelle
strutturate in modo da prestarcisi bene, puoi a questo punto pensare
di creare relazioni mediante "foreign keys".

beh sicuramente poi manualmente modificherò la struttura ripassandole, però 
alcune sono tabelle di supporto di lookup quindi era una rottura 
inserirle...
su delphi5 però non esiste ado vero??? devo usare il 6 o superiore??
se un utente volesse avere un db su un supporto esterno come faccio a 
installare il db su questo?

installare il db su questo?
Che intendi per supporto esterno ?

beh se un cliente non volesse tenere "alcuni" dati sul disco principale ma 
li volesse usare su un supporto tipo usbpen o hd usb??
Simo 

li volesse usare su un supporto tipo usbpen o hd usb??
Immagino dati che la GdF č meglio non scopra eh eh eh :-)
In ogni caso, un DBMS vive bene indipendentemente dalla locazione
fisica della base dati.  I supporti usb vengono montati al momento
opportuno e da allora in poi utilizzati come se fossero supporti
fissi.  Questo prescinde da quanto detto prima.

vedo che hai capito... però mi domandavo come si fa...
nel senso che lavorando su access o su paradox i file fisicamente sono in 
f:\dati però usando un db sql tipo postgres posso dire dove si trova la 
locazione??? posso farlo anche a runtime?
Simo 

locazione??? posso farlo anche a runtime?
Sì.