Newsgroup: it.comp.appl.access
Titolo: Come gestire aggiornamento struttura db in modo coretto?

Specie durante lo sviluppo di un nuovo progetto, capita che sia 
necessario modificare abbastanza frequentemente la struttura del db su 
cui si basa il progetto
Oggi tre campi in piu', domani si ritocca la dimensione di altri due 
campi, dopodomani si aggiunge lo spesometro e giu' nuove tabelle...
Ovviamente sto esagerando, procedere in questo modo vuol dire che la 
fase di analisi e progettazione se ne e' andata a quel paese, ma tant'e' 
visto che ci siamo esasperiamo il problema cosi' sembrera' impellente 
trovare una soluzione efficace
Dal punto di vista tecnico, come fareste?
File di testo estrno con le modifiche da apportare?
Codice vba con le istruzioni ddl?
Avviamento manuale da operatore o in automatico?
Trascrivete la versione da qualche parte?
Personalmente, metto tutte le modifiche dentro a routine che viene 
avviata a mano
Ma non mi piace per niente, l'utente potrebbe dimenticarsi di 
aggiornare, con l'andare del tempo la routine si ingigantisce, ecc...
Inzomma, come fate voi?
O meglio, come consigliereste di fare?
 


io faccio cosi, premetto che uso solo sql server come be
 
ad ogni modifica aggiorno un change log dove annoto il numero di 
versione e cosa ho modificato. un banale txt ad uso mio interno.
tramite un software che mi sono fatto, carico l'aggiornamento nel mio 
spazio ftp e in automatico parte la mail che avvisa il cliente che è 
stato rilasciato un aggiornament.
 
dal cliente ho un agent che gira sul server, che preleva automaticamente 
(o forzatamente volendo quando vedono la mail) gli aggiornamenti per sql 
server (script) e per i FE dei client. Una sorta di live update
 
gli script sql vengono eseguiti automaticamente.
dopo averli eseguiti vengono salvati in apposita cartella, possono 
tornare utili a distanza di tempo per capire ad ogni versione cosa ès 
tato modificato su sql server.
 
gli aggiornamenti dell'applicazione vengono salvati in apposita cartella 
condivisa del server e hanno un nome del tipo aaaammgghhmmss.exe. sono 
pacchetti creati con innosetup
 
sui client il programma gia installato notifica la presenza di uno o più 
aggiornamenti presenti nella cartella del server e propone di installarli
viene confrontata la data dell'ultimo aggiornamento installato con 
quella del nome file di cui parlavo sopra. se un client ne salta un po' 
li installa cmq a catena.
 
ad ogni aggiornamento il client copia la versione precedente del 
programma in una cartella del pc   \versionePrecedente\ per permettere 
un ripristino nel caso l'aggiornamento per mia svista pianti tutto
 
 
per le varie versioni del sorgente da mantenere da me invece, ho il 
software di backup che le gestisce in automatico e le salva nel nas 
dell'ufficio (fino a una 15ina di versioni precedenti) il nas fa a sua 
volta sincro con il nas di casa e di notte altro sincro su google drive
 
BFS
 
 
 
 
 
 


Gestione molto accurata
E' un punto cui anch'io vorrei far arrivare le mie procedure
Non ho ben capito hai una procedura separata che aggiorna e poi il 
client principale, giusto?
Tu avvii l'aggiornatore e poi lui avvia la procedura principale, e' cosi?
E se si spatacca un aggiornamento, come funziona?
L'operatore sceglie a mano la versione recedente?
 
 
 
 


ho un programma separato nel server che si chiama live update
questo preleva gli aggiornamenti dal mio ftp
salva gli exe per i client in apposita cartella del server condivisa
 
ad ogni apertura, i client leggono il contenuto della cartella 
aggiornamenti, essendo i file exe con il nome sopradescritto anno mese 
giorno etc sono in grado di capire quale di quei exe non sono ancora 
stati installati nel client. l'ultimo eseguito infatti me lo salvo in un 
.ini locale nella postazione
 
una notifica avvisa il client all'apertura "sono disponibili agg bla bla 
bla...installarli ora ?"
se si da si, il client avvia l'exe e si chiude...l'exe fa la sua 
procedura guidata di accettazine licenza etc
alla sucessiva riapertura del client verifico se ce ne sono ancora di 
aggiornamenti e cosi via