Wiki
Clone wikifacile / informazioni_sviluppatori
Aggiornamento Firebird dalla versione 2.5.x alla 4.0.x
La nuova versione di Firebird è obbligatoria a partire dalla versione 204 di Facile.
Operazioni preliminari
Queste operazioni, vanno effettuate indipendentemente dalla tipologia di installazione:
- aggiornare Facile fino alla versione v203;
- effettuare un backup del database con la versione 2.5 di
gbak.exe
.
A questo punto bisogna distinguere fra l'installazione client/server e quella embedded.
Versione client/server
Sul server
- Compilare la lista degli utenti attivi registrandone password e ruolo;
- disinstallare la versione 2.5 di Firebird;
- installare la versione 4.0.x di Firebird a 64 bit. Come password per l'utente
SYSDBA
utilizzaremasterkey
; -
nel file
databases.conf
, presente nella cartella di installazione di Firebird, inserire la voceFACILE = c:\percorso del file fdb\nomedb.fdb
-
in caso sia installato FlameRobin, bisogna disinstallarlo e sostituirlo con una versione a 64bit uguale o superiore alla
0.9.7
; - ripristinare gli utenti preesistenti con la stessa password e lo stesso ruolo (e.g.
grant VENDITORE to rossi
); - ripristinare, mediante la nuova versione di
gbak.exe
, la copia di sicurezza (punto 2 della procedura); - scaricare il file https://www.eosdev.it/download/facile/modifichefb4.sql.7z ed applicarlo al nuovo database.
Sui client
- Aggiornare il programma di teleaggiornamento (https://www.eosdev.it/download/facile/teleaggiornamento.7z) con la procedura manuale e lanciarlo per scaricare l'ultima versione disponibile.
Versione embedded
- Scaricare la versione
.zip
di Firebird 4.0.x a 32 bit. Estrarne il contenuto in una cartella temporanea; - copiare, dalla cartella temporanea, i file sotto indicati nella corrispondente cartella di Facile, sovrascrivendo i file già presenti:
intl/*.*
plugins/engine13.dll
fbclient.dll
,firebird.conf
,firebird.msg
,gbak.exe
,gfix.exe
,ib_util.dll
,icu*.*
,isql.exe
,msvcp140.dll
,vcruntime140.dll
,zlib1.dll
- rinominare, se presente, il file
aliases.conf
indatabases.conf
- cancellare i vecchi file
icu
(del icu??30.*
) emsvc
(del msvc*30.dll
) - ripristinare, mediante la nuova versione di
gbak.exe
, la copia di sicurezza (punto 2 della procedura); - scaricare il file https://www.eosdev.it/download/facile/modifichefb4.sql.7z ed applicarlo al nuovo database.
- aggiornare il programma di teleaggiornamento (https://www.eosdev.it/download/facile/teleaggiornamento.7z) con la procedura manuale e lanciarlo per scaricare l'ultima versione di Facile disponibile.
Per semplificare le operazioni si può scaricare un archivio "maggiorato" (https://www.eosdev.it/download/facile/teleaggiornamento_embedded.7z) contenente tutti i file di Firebird necessari oltre al programma di aggiornamento.
Operazioni finali
Per concludere, indipendentemente dal tipo di installazione:
- ripristinare, mediante la nuova versione di
gbak.exe
, la copia di sicurezza (punto 2 della procedura); - effettuare un teleaggiornamento.
Monitoraggio temporale una tabella
Per il debug può essere utile registrare come variano nel tempo i valori di una tabella. Un sistema rapido per questo genere di logging sfrutta le external table di Firebird.
Per esempio, per monitorare le esistenze di unpunto di carico/scarico, si può:
-
creare un apposito file di testo
create table EXT_LOG external file 'c:\firebird_log\punti.txt' ( STAMP char(24), MESSAGE char(200), CRLF char(2) /* for a Windows context */ )
L'accesso alla cartella
c:\firebird_log
da parte del servizio Firebird richiede l'impostazione di un apposito permesso nel filefirebird.conf
:ExternalFileAccess = Restrict c:\firebird_log
ed il successivo riavvio del servizio.
Bisogna anche permettere l'accesso alla tabella
EXT_LOG
:grant all on table EXT_LOG to user PUBLIC
-
creare un trigger per "di comodo" per l'inserimento automatico della della data di registrazione e dei caratteri di "a capo"
create trigger BI_EXT_LOG for EXT_LOG active before insert position 0 as begin if (new.STAMP is null) then new.STAMP = cast(LOCALTIMESTAMP as char(24)); new.CRLF = ASCII_CHAR(13) || ASCII_CHAR(10); end
-
creare un trigger per la registrazione vera e propria
create trigger PUNTI_INVENTARI_DEBUG for PUNTI_INVENTARI active before update position 0 as begin if (new.PUNTO = 1 and new.ESISTENZA <> old.ESISTENZA) then begin insert into EXT_LOG(MESSAGE) values(' old.PROD_SER: '||OLD.PROD_SER||' new.PROD_SER: '||new.PROD_SER ||' da: '||cast(old.ESISTENZA as varchar(10))||' a: '||cast(new.ESISTENZA as varchar(10))); end end
Questo approccio può esser rapidamente adattato a qualsiasi tabella.
Una volta terminata la necessità di monitorare la tabella bisogna ricordarsi di eliminare il codice di supporto:
DROP TRIGGER PUNTI_INVENTARI_DEBUG ^^ DROP TRIGGER BI_EXT_LOG ^^ DROP TABLE EXT_LOG ^^
la cartella contenente il file di log (c:\firebird_log
) e ripristinare il file firebird.conf
.
Updated