Newsgroup: it.comp.lang.delphi
Titolo: Firebird SuperServer - creazione host server

Ciao a tutti,
premesso che ho iniziato ieri a guardarmi firebird, da quello che ho
visto (utilizzando EMS SQL Manager) per poter creare e gestire un DB
è
necessario prima registrare l'host indicando il server, il protocollo
di connessione, la porta ecc. ma mi chiedevo se questo passaggio è
possibile effettuarlo a runtime da delphi. La questione nasce nel
momento in cui devo distribuire l'applicazione:
modifico lo script di InnoSetup per customizzare il setup in modo che
venga installato sia firebird (secondo le mie esigenze) che la mia
applicazione, ma a questo punto firebird deve essere configurato
registrando prima l'host; escludendo l'ipotesi di obbligare il
cliente
a fare questo passaggio ed escludendo l'ipotesi di doverlo fare io
personalmente poichè non sempre possibile, l'unica soluzione è
gestire
tutto in modo automatico tramite delphi o firebird stesso. E'
possibile fare tutto questo? Sbaglio qualcosa?
 
Grazie a chi vorrà darmi consigli.
Andrea

 registrando prima l'host [...]
 
No, non è necessario effettuare alcuna registrazione per poter utilizzare FireBird: quell'operazione viene eseguita all'interno dei tool di amministrazione (come EMS, IB Expert, FlameRobin) per poter aprire i database su cui si lavora senza la necessità di dover ogni volta specificare host, nome del DB, username e password.
 
Ciao,
  Marco.
 
-- 
Marco Breveglieri
   (
http://www.marco.breveglieri.name
)

 Firebird Database
EDIT: rispondo qui a Morde (colpa mia che ho cancellato il post a cui
hai risposto...sorry)
Per prima cosa ti ringrazio dell'interessamento, e ora veniamo al
problema:
in merito allo script di ISS ho già iniziato a modificarlo e
customizzarlo anche se non è nè semplicissimo nè veloce ma quello mi
preoccupa di meno; quello che vorrei chiarire è la questione
"register host". Sempre da SQL Manager, il primo passo per creare un
DB è impostare un host ed effettuare la relativa connessione (una
volta connesso sarà possibile creare DB e quant'altro); questo
passaggio si risolve semplicemente con la soluzione che mi hai postato
" [..]in fase di installazione scriverai le credenziali su un file ini
che verrà letto dalla tua applicazione[..]"? Non è necessario creare
prima un host server? Il passaggio che mi hai consigliato credo venga
dopo, ovvero una volta che ho creato l'host posso connettermi
utilizzando le credenziali impostate in fase di creazione, sbaglio?
Grazie ancora.
Andrea

 No, non � necessario effettuare alcuna registrazione per poter utilizzare FireBird: quell'operazione viene eseguita all'interno dei tool di amministrazione (come EMS, IB Expert, FlameRobin) per poter aprire i database su cui si lavora senza la necessit� di dover ogni volta specificare host, nome del DB, username e password.
Leggendoti mi sto chiedendo se ho capito male la domanda dell'OP: lui 
parla di host e pensavo si riferisse ad una configurazione 
client-server, dove le credenziali del server vengono usate 
dall'applicazione per collegarvisi, per questo motivo ho suggerito di 
persisterle nel file ini dell'app client.
Magari potrebbe chiarirci l'architettura della sua installazione.


 utilizzando le credenziali impostate in fase di creazione, sbaglio?
 
C'è un overhead di messaggi, ad ogni modo, veniamo alla tua architettura.
 
Si tratta di una client server, dove il db è su una macchina e tanti 
programmi vi accedono da remoto?
Se si, devi installare firebird con le sue componenti di sistema, il 
servizio, il file fdb, ecc. Non è necessario registrare alcun host: come 
ha già detto Marco quella finestra di registrazione serve alle 
applicazioni per collegarsi, alla pari del tuo programma. Non c'entra.
 
A livello di client, dovrai chiedere le credenziali di dove si trova il 
database host (indirizzo del server, porta, username e password) per poi 
essere usate dai programmi.
 
tecnicamente succede che il tuo programma, grazie alla dll fbclient.dll 
che dovrebbe avere nella sua directory, si connette all'host e dalla 
parte dell'host c'è in ascolto il servizio di firebird sulla porta 
configurata in fase di installazione. Il servizio parla con il tuo 
programma finchè non chiudi la connessione.
 
Se invece si tratta di un database locale, allora non serve installare 
le componenti server di firebird ma è sufficiente il file fdb e con la 
dll fbclient ti puoi connettere direttamente usando il percorso del file.
 
Forse ho detto qualche inesattezza, tu verifica sempre consultanto il 
sito di firebird.
http://www.firebirdsql.org/en/reference-manuals/
 
a così via...



Perfetto, non era come pensavo, meglio così.
Ne approfitto per un ultimo (spero) chiarimento, questi sono i
passaggi semplificati che vorrei fare per lo sviluppo e la
distribuzione:
- Creo il DB in locale sul mio PC attraverso un tool come SQL Manager
- Lo includo in una cartella del mio programma
- Customizzo il setup di Firebird in modo che installi sia il DB che
la mia applicazione
- Il pacchetto è pronto per la distribuzione
 
E' corretto?
Se utilizzo come credenziali user e password standard di Firebird (per
intenderci SYSDBA) non è necessario salvare nulla nei file INI come
consigliato da Morde, sbaglio?
 
Grazie ancora per l'aiuto.
Andrea

 consigliato da Morde, sbaglio?
 
Giusto. Però li devi cablare nel codice, e questo ha i suoi svantaggi. 
Cmq puoi farlo benissimo.



Ottimo, grazie mille a tutti dell'aiuto e dei consigli.
Andrea

 distribuzione [...]
Al posto di installare il server completo di FireBird (che magari in qualche scenario potrebbe essere installato in una macchina diversa da quella che esegue il programma, preposta a fare da "database server"), puoi valutare l'uso di *FireBird Embedded*.
Si tratta di una versione di FireBird in cui la DLL del client contiene anche una implementazione del server e permette di accedere direttamente a un file di database nella macchina dell'utente, senza dover attivare o installare alcun servizio di FireBird.
Chiaramente, questa soluzione ha tutti i vantaggi derivanti dall'essere "embedded", tutto in uno, ma ha anche degli svantaggi, legati al fatto che non si tratta di un server vero e proprio, non c'è multiutenza, ecc.
Tuttavia, sviluppando un'applicazione Delphi, nulla vieta di crearla con tutti i crismi previsti dall'uso di un database server, in questo caso FireBird, passando dall'embedded al client/server in un secondo momento.
