Client Server nur mit TCP/IP

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
Sandman
Beiträge: 3
Registriert: Sa 11. Feb 2023, 20:19

Hallo,
ich bin neu mit Firebird und lese mir derzeit die Doku für die Firebird 3 durch.

Gibt es für Client/Server installationen die Möglichkeit, die Datenbank nur über TCP/IP ohne Netzwerklaufwerk zu verbinden? Bei anderen Datenbanken wie z.B. CubeSQL oder MariaDB ist das möglich.

Bei Firebird habe ich in der Doku nur die Möglichkeit von Datenbank Aliasen gefunden, die sind aber wieder auf Netzwerkfreigaben/Laufwerksfreigaben in der Art von

Code: Alles auswählen

 fbdb1 = c:\Firebird\sample\Employee.fdb
Wir haben bei uns eine Warenwirtschaft, die mit Firebird funktioniert und diese braucht eine Laufwerksfreigabe auf dem Datenbankserver.

Bisher habe ich nur mit Datenbankservern gearbeitet, wo man über TCP/IP Verbindung sich anmeldet und keine Laufwerksfreigabe benötigt.

Ist das bei Firebird anders? Muss ich da mit dem Zugriff umdenken wie bei anderen Servern?

Danke für Informationen.

Gruß
Sandman
vr2
Beiträge: 214
Registriert: Fr 13. Apr 2018, 00:13

Hallo Sandman,

klar geht TCP: host[/{port|service}]:{filepath | db_alias}

Den DB-Alias hast Du ja bereits definiert.

im einfachsten Fall wäre das ein Hostname vorne, der über DNS aufgelöst wird und auf dem der Firebird-Server läuft, und hinterm Doppelpunkt der DB-Alias:

Code: Alles auswählen

ein_host:fdb1
oder

Code: Alles auswählen

127.0.01:fdb1 - oder eine remote IP vorne
Falls Dein Firebird-Server nicht auf dem Standard-Port 3050 läuft, gibst Du den Port hinter dem Host an:

Code: Alles auswählen

ein_host/3054:fdb1
Schau auch mal hier: https://firebirdsql.org/file/documentat ... rence.html und etwas älter https://www.ibphoenix.com/files/Connect ... gs_Fb3.pdf
Wir haben bei uns eine Warenwirtschaft, die mit Firebird funktioniert und diese braucht eine Laufwerksfreigabe auf dem Datenbankserver.
Die Wawi und auch egal welcher andere Firebird-Client braucht keine Laufwerkfreigabe - was ich oben beschrieben habe, reicht. Handelt sich um Amicron, oder? Hätte schon vorgeschlagen, nimm doch gleich Firebird 4, aber Amicron unterstützt die Version noch nicht.

Grüße, Volker
Zuletzt geändert von vr2 am So 12. Feb 2023, 00:56, insgesamt 4-mal geändert.
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Du musst nur die richtige Verbindungsfolge verwenden:

Server/Port:C:\Path\DBName
Server:C:\Path\DBName
IP/Port:C:\Path\DBName
IP:C:\Path\DBName

Server/Port:Alias
Server:Alias
IP/Port:Alia
IP:Alias

Der Port ist optional, der Default ist 3050 (Siehe Firebird.conf).
Der Alias sollte verwendet werden um Sniffern den Standort der DB zu verbergen. Außerdem kann man dann leichter die DB mal woanders hinpacken.
Eine Freigabe ist vollkommen überflüssig, da der FB-Server ja nur lokal zugreifen kann.
Sandman
Beiträge: 3
Registriert: Sa 11. Feb 2023, 20:19

Hallo
Die Wawi und auch egal welcher andere Firebird-Client braucht keine Laufwerkfreigabe, es wäre auch eine potentielle Sicherheitslücke - was ich oben beschrieben habe, reicht. Handelt sich um Amicron, oder? Hätte schon vorgeschlagen, nimm doch gleich Firebird 4, aber Amicron unterstützt die Version noch nicht.
Sind die so bekannt. Ja es ist Amicron. (Noch) :)
klar geht TCP: host[/{port|service}]:{filepath | db_alias}

Den DB-Alias hast Du ja bereits definiert.
Was ich aber an der Doku nicht so ganz verstanden habe ist, wo ist der Alias zu definieren? Auf dem Server oder auf dem Client? Wenn ich den Server ändere, muss ich dann den Alias auf jedem Client anpassen?
vr2
Beiträge: 214
Registriert: Fr 13. Apr 2018, 00:13

Sandman hat geschrieben: So 12. Feb 2023, 00:56
klar geht TCP: host[/{port|service}]:{filepath | db_alias}
Den DB-Alias hast Du ja bereits definiert.
Was ich aber an der Doku nicht so ganz verstanden habe ist, wo ist der Alias zu definieren? Auf dem Server oder auf dem Client? Wenn ich den Server ändere, muss ich dann den Alias auf jedem Client anpassen?
Du meinst den DB-Alias, nicht den Serveralias (= Host), nehme ich an: In der Datenbank-Konfigurationsdatei databases.conf im Firebird-Server-Installationsverzeichnis,. auf Windows normalerweise da C:\Programme\Firebird\Firebird_3. Einen typischen Eintrag in dieser Datei hast Du ja in Deinem ersten Posting genannt

fbdb1 = c:\Firebird\sample\Employee.fdb

Deswegen dachte ich, Du weißt, wo der konfiguriert wird. Jedenfalls, da konfigurierst Du Deine DB-Aliase. Firebird schlägt da nach, wenn Du mit einem DB-Alias im connect String ankommst. Die DB sollte auf dem Server liegen, und kann (ist sogar von Vorteil) auf einer anderen Platte als Firebird liegen.

Jetzt ist die Frage, was Du mit "wenn ich den Server ändere" meinst: Angenommen, Du hast auf "testhost" in databases.conf den Alias data definiert:

data = C:\Firebird\sample\data.fdb

Dann kann ein Client mit testhost:data connecten. Jetzt packst Du die DB data.fdb auf testhost woanders hin, anderes LW, passenderes Verzeichnis:

data = D:\db\data.fdb

Für die Clients ändert sich dadurch gar nichts, die können weiterhin mit testhost:data connecten. Meintest Du das?
Sandman
Beiträge: 3
Registriert: Sa 11. Feb 2023, 20:19

Du meinst den DB-Alias, nicht den Serveralias (= Host), nehme ich an: In der Datenbank-Konfigurationsdatei databases.conf im Firebird-Server-Installationsverzeichnis,. auf Windows normalerweise da C:\Programme\Firebird\Firebird_3. Einen typischen Eintrag in dieser Datei hast Du ja in Deinem ersten Posting genannt
Richtig, ich meine den Datenbank Alias. Danke für die Information.
Jetzt ist die Frage, was Du mit "wenn ich den Server ändere" meinst: Angenommen, Du hast auf "testhost" in databases.conf den Alias data definiert:

data = C:\Firebird\sample\data.fdb

Dann kann ein Client mit testhost:data connecten. Jetzt packst Du die DB data.fdb auf testhost woanders hin, anderes LW, passenderes Verzeichnis:

data = D:\db\data.fdb
Ich gehe bei der Frage von der Situation aus, dass der Server ausfällt und ich einen anderen Server verwenden muss. In dem Fall mit einer anderen IP.

Aber der Datenbankumzug, den du aufgeführt hast, ist ja absolut komfortabel. Serverdienst anhalten, Datenbank umkopieren und Alias anpassen, Serverdienst wieder starten.
vr2
Beiträge: 214
Registriert: Fr 13. Apr 2018, 00:13

Sandman hat geschrieben: Mo 13. Feb 2023, 08:54
Ich gehe bei der Frage von der Situation aus, dass der Server ausfällt und ich einen anderen Server verwenden muss. In dem Fall mit einer anderen IP.
Das ist dann wie bei andern TCP-Client-Server-Geschichten auch, es kommt darauf an, wieviel Zeit Du in so einem Fall hast und ob das automatisiert laufen soll. Wenn der Windows-Server (Du benutzt doch Windows als host für Firebird, nicht linux, linux geht auch), also wenn der Windows-Server nicht wackelig ist, fällt auch Firebird nicht aus, der ist sehr robust und startet sich sofort neu, falls Anwendungscode ihn tatsächlich mal abgeschossen hat, das passiert eigentlich nur bei schlecht geschriebenen udfs und Amicron nutzt keine. Da musst Du nicht so weit ausholen für eine Wawi. Betreue selber seit Jahren so ein System und das war noch nie nötig.

Falls Du das doch willst, gibt es grob dieses Spektrum: Wenn Du Zeit genug hast, kopierst Du die gesamte Firebird-Installation und die DB auf den anderen Server, installierst dort den Firebird-Dienst, änderst den DNS-Eintrag, so dass der Hostwechsel für Clients transparent ist. Bis auf die DNS-Propagation ist das in 5 Minuten erledigt. Wenn es hingegen automatisiert laufen soll, brauchst Du eigentlich Replikation, die gibt es aber erst ab Firebird 4. Ob Amicron Firebird 4 unterstützt, kann ich Dir noch nicht sagen, habe bei Amicron keine Info dazu gefunden, es gibt ein paar Unterschiede zu Firebird 3, die Amicron betreffen könnten.
Aber der Datenbankumzug, den du aufgeführt hast, ist ja absolut komfortabel. Serverdienst anhalten, Datenbank umkopieren und Alias anpassen, Serverdienst wieder starten.
Ja, DB-Aliase machen einiges einfacher und erhöhen außerdem die Sicherheit, weil der Client nicht wissen muss, wo auf dem Server die DB liegt.

Grüße, Volker
Antworten