Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: tiberi72 - Ottobre 09, 2012, 10:33:06 am

Titolo: collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 09, 2012, 10:33:06 am
Ciao a tutti,
torno di nuovo alla carica..
Ho creato un programma che ha varie connessioni firebird.
In locale nessun problema, dopodiche' vorrei metterlo in rete.
Sul server che ha la cartella da condividere ho istallato firebird super server 2.5.1, e sul client ho fatto lo stesso (sul client non ho istallato solo la versione client perche' dal client sviluppo il programma.
A questo punto ho modificato il sorgente ed ho provato a mettere sulla proprieta' hostname della tibconnection il nome del server remoto e sul databasename il percorso per arrivare alla cartella condivisa dove risiede il db (esempio: hostname server databasename \\server\condivisa\dati.fdb), ma non ha funzionato (se metto connected a true mi da errore: unable to complete network request to host "server").
Ho provato anche a sostituire il nome del server con l'indirizzo Ip (esempio: hostname 192.168.1.100 database name \\192.168.1.100\condivisa\dati.fdb)ma da errore lo stesso (unable to complete network request to host "192.168.1.100")
Come devo fare per collegare con firebird un database in rete?
Titolo: Re:collegamento su un percorso di rete
Inserito da: Stilgar - Ottobre 09, 2012, 03:25:31 pm
Usa un alias di Firebird.
Così nella connessione non devi mettere il path sul server (magari non visibile da fuori del server)
Controlla il file alias dentro la cartella di firebird.
Titolo: Re:collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 10, 2012, 09:26:54 am
e l'hostname devo cambiarlo per collegarmi al server?
Avresti per caso un esempio sottomano per la configurazione della tibconnection su un server?
Scusa la raffica di domande ma non vorrei aver sbagliato il tipo di database per il mio progetto: io vorrei gestire alcune tabelle di un database da diversi computer nella stessa rete, pensi che sia possibile farlo con firebird o mi consigli qualche altro database (possibilmente gratuito tipo firebird ;) )che riesca a lavorare in rete?
Titolo: Re:collegamento su un percorso di rete
Inserito da: Stilgar - Ottobre 10, 2012, 09:58:26 am
Allora ;) :
1) No non ho esempi sotto mano.
2) Firebird è un ottimo RDBMS
3) Punti al server con la tua connessione (basta che la dll client sia presente sulla macchina che deve connettersi), al posto del solito percorso metti l'alias.

;)
Titolo: Re:collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 10, 2012, 10:31:15 am
ma per far funzionare un pc da client va bene anche un'istallazione super server o devo per forza istallare firebird con  il parametro solo client?
Titolo: Re:collegamento su un percorso di rete
Inserito da: Stilgar - Ottobre 10, 2012, 10:35:18 am
Tiberi ... basta che il tuo programma veda la DLL e la riesca a caricare.
Non devi installare proprio un bel niente nel client che riguardi Firebird.
Un copia e incolla dove è il tuo exe, per dirla terra terra.
Siccome non conosco intimamente TIBConnection, non so se supporta il doppio nome della DLL o pretenda uno dei due.
In ogni caso puoi andare a spluciare la classe e vedere che nome deve avere.
Tieni conto che Firebird è un fork open di Interbase.
Quindi ha il suo di nome fbclient.dll e quello interbase.
Prova con uno al massimo rinomini la dll e riprovi ;)
Titolo: Re:collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 10, 2012, 11:13:47 am
Tiberi ... basta che il tuo programma veda la DLL e la riesca a caricare.
Non devi installare proprio un bel niente nel client che riguardi Firebird.
Un copia e incolla dove è il tuo exe, per dirla terra terra.
Siccome non conosco intimamente TIBConnection, non so se supporta il doppio nome della DLL o pretenda uno dei due.
In ogni caso puoi andare a spluciare la classe e vedere che nome deve avere.
Tieni conto che Firebird è un fork open di Interbase.
Quindi ha il suo di nome fbclient.dll e quello interbase.
Prova con uno al massimo rinomini la dll e riprovi ;)
Ho provato a installare in modalita' client un pc e poi ho inserito la cartella con eseguibile, fbclient.dll e aliases.conf che punta a cartella di rete del server.
Mi da il seguente messaggio di errore Unable to complete network request to host "localhost"
Se da lazarus imposto come server name della tibconnect il pc dove risiede firebird server non mi fa la connessione (anche se ho impostato il database name con il percorso del server "server:c:\condivisa\dati.fdb")
Sicuro che basta solo configurare l'alias?
Titolo: Re:collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 10, 2012, 12:04:14 pm
allego un esempio.
Il programma in locale e' funzionante, ma non riesco a impostarlo per farlo funzionare nel server "server" con il database che risiede nella cartella c:\condivisa\datinilu.fdb.
Potreste dirmi cosa sbaglio?
nel file zip trovate il programma funzionante in locale.
Le modifiche che ho fatto io sono sul file clienti.lfm che ho aggiunto come altro allegato servono per provare a collegarmi in rete (senza successo  :'( :'( :'()
Fatte le prove ordinarie (pingato il server sia con il nome che con l'indirizzo ip e provato a sostituire nel server il nome con l'indirizzo ip).


Cosa sbaglio?
Titolo: Re:collegamento su un percorso di rete
Inserito da: Stilgar - Ottobre 10, 2012, 12:50:03 pm
Cercandoti in rete delle guide mi sono imbattuto in questa.
E' per zeos, ma riporta la cose che devono essere presenti (fai la tara per la versione embedded - cambia solo la DLL del DBEngine con quella di connessione)

http://voicixs.com/archives/198 (http://voicixs.com/archives/198)
Salta il punto 17.

Questo è per l'alias:
http://www.firebirdsql.org/pdfmanual/Firebird-2.5-QuickStart.pdf (http://www.firebirdsql.org/pdfmanual/Firebird-2.5-QuickStart.pdf)
Citazione
Use database aliases
Database aliases shield the client from physical database locations. Using aliases, a client can e.g. connect
to “frodo:zappa” without having to know that the real location is frodo:/var/firebird/music/
underground/mothers_of_invention.fdb. Aliases also allow you to relocate databases while the
clients keep using their existing connection strings.
Aliases are listed in the file aliases.conf, in this format on Windows machines:
poker = E:\Games\Data\PokerBase.fdb
blackjack.fdb = C:\Firebird\Databases\cardgames\blkjk_2.fdb
And on Linux:
books = /home/bookworm/database/books.fdb
zappa = /var/firebird/music/underground/mothers_of_invention.fdb
Giving the alias an .fdb (or any other) extension is fully optional. Of course if you do include it, you must
also specify it when you use the alias to connect to the database.
Aliases, once entered and saved, take effect immediately. There is no need to restart the server.
L'alias è proprio usato per nascondere dettagli.
Devi usare (nella connessione da client scritto con lazzaro) il nome dell'alias.
Titolo: Re:collegamento su un percorso di rete
Inserito da: Stilgar - Ottobre 10, 2012, 12:51:55 pm
Mi sono dimenticato di risponderti ....
Cosa sbagli?
La connessione è impostata a :
Codice: [Seleziona]
c:\condivisa\datinilu.fdb
Quindi per il db in locale..... ;)
Titolo: Re:collegamento su un percorso di rete
Inserito da: tiberi72 - Ottobre 11, 2012, 10:42:47 am
Ho trovato qual'era il problema.
Durante l'istallazione di firebird sul server non aveva creato in automatico l'eccezione per la porta 3050 che utilizza firebird.
Creata la porta e risolto il problema  ;D ;D ;D
Per eseguire il test verso il server ho utilizzato un comando
Codice: [Seleziona]
telnet server 3050
Comunque grazie per la dritta dell'alias, in effetti e' molto utile e mi permette di mantenere i db connessi su lazarus in fase di sviluppo

Grazie e ciao!!