|
Antwort |
Registriert seit: 17. Aug 2009 66 Beiträge Delphi 11 Alexandria |
#1
Datenbank: FB • Version: 3 • Zugriff über: Delphi Seattle
Hallo,
wie man eine Firebird-DB auf einem Rechner erstellt ist soweit kein Problem, Anleitung dazu gibt es genug. Nun soll es aber so sein, dass die FB-Datenbank auf einem eigenen Server liegt und von unterschiedlichen Workstations darauf zugegriffen werden soll. Leider habe ich dazu noch keinerlei, für mich verständliche, Informationen gefunden, wie das prinzipiell einzurichten ist. Mir käme es wirklich auf ein praktisches Beispiel an. 1) Was genau auf dem Server ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service") Nehmen wir an, eine Datenbank wurde auf dem Server erzeugt und liegt in: "C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPL OYEE.FDB" 2) In vielen Tipps habe ich gelesen, dass man mit Aliasen arbeiten soll, nehmen wir an der Alias für die DB soll "MyAlias" lauten. Wo und wie ist das genau einzutragen? 3) Was genau auf der Workstation ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service") 4) Welche Komponenten (Delphi 10 Seattle) benötige ich minimal, mit welchen Properties gefüllt, um dann an die Datenbank "..\empbuild\EMPLOYEE.FDB" (bzw. den Alias "MyAlias") ran zu kommen? Derzeit würden die "Params"-Properties einer "TFDConnection"-Komponente so gefüllt aussehen um an die "EMPLOYEE.FDB" ranzukommen, wenn sie lokal auf der Workstation wäre:
Delphi-Quellcode:
Wie sähen die Parameter nun aus, wenn ich auf den Alias "MyAlias" zugreifen will, um damit die Datenbank auf dem Server anzusprechen?
dbs_FB.Params.User_Name=sysdba
dbs_FB.Params.Password=masterkey dbs_FB.Params.DriverID=FB dbs_FB.Params.CharacterSet=UTF8 dbs_FB.Params.PageSize=16384 dbs_FB.Params.Database=C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPLOYEE.FDB Zusatzfrage: Gibt es Anleitungen, was ich nun eigentlich genau bei der Auslieferung einer mit Delphi entwickelten Applikation zu deployen habe, wenn sie auf eine FB-Datenbank zugreift und die FB-Datenbank auf einem Server liegt? Klar für mich ist, auf dem Server installiere ich Firebird, soweit logisch. Und auf jeder Workstation muss ich FB auch installieren? Die Fragen sind eigentlich ziemlich simpel, ich weiß, aber alle Beispiele die ich fand sprechen immer nur davon, dass die Datenbank auf dem Rechner liegt, wo auch die Anwendung liegt, was ich jetzt mal für einen Spezialfall halte. Eigentlich betreibt man eine Datenbank ja, damit mehrere Personen von unterschiedlichen Rechnern drauf zugreifen und ergo die Datenbank auf einem Server-Rechner liegt. Und dafür finde ich keine Anleitungen. Könnt' ihr mich bitte erhellen? TIA |
Zitat |
Registriert seit: 8. Jun 2002 Ort: Berglen 2.381 Beiträge Delphi 10.4 Sydney |
#2
1) Was genau auf dem Server ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service")
Nehmen wir an, eine Datenbank wurde auf dem Server erzeugt und liegt in: "C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPL OYEE.FDB" 2) In vielen Tipps habe ich gelesen, dass man mit Aliasen arbeiten soll, nehmen wir an der Alias für die DB soll "MyAlias" lauten. Wo und wie ist das genau einzutragen?
EIn Alias ist in die aliases.conf einzutragen. 3) Was genau auf der Workstation ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service")
4) Welche Komponenten (Delphi 10 Seattle) benötige ich minimal
, mit welchen Properties gefüllt, um dann an die Datenbank "..\empbuild\EMPLOYEE.FDB" (bzw. den Alias "MyAlias") ran zu kommen? Derzeit würden die "Params"-Properties einer "TFDConnection"-Komponente so gefüllt aussehen um an die "EMPLOYEE.FDB" ranzukommen, wenn sie lokal auf der Workstation wäre:
Delphi-Quellcode:
dbs_FB.Params.User_Name=sysdba
dbs_FB.Params.Password=masterkey dbs_FB.Params.DriverID=FB dbs_FB.Params.CharacterSet=UTF8 dbs_FB.Params.PageSize=16384 dbs_FB.Params.Database=C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPLOYEE.FDB Wie sähen die Parameter nun aus, wenn ich auf den Alias "MyAlias" zugreifen will, um damit die Datenbank auf dem Server anzusprechen? Im übrigen fehlt mir in der Auflistung der Server/Host sowie die Portangabe, ohne geht das nicht.... Zusatzfrage: Gibt es Anleitungen, was ich nun eigentlich genau bei der Auslieferung einer mit Delphi entwickelten Applikation zu deployen habe, wenn sie auf eine FB-Datenbank zugreift und die FB-Datenbank auf einem Server liegt? Klar für mich ist, auf dem Server installiere ich Firebird, soweit logisch. Und auf jeder Workstation muss ich FB auch installieren?
Und eine Anleitung was genau ausgeliefert wird, sollte sich bei Firebird finden (allerdings finde ich auch auf die schnell nix). Also Server: Firebird als Serverinstallation, Client: Programm + fbclient.dll + Konfigurationdatei in der die Daten für die Verbindung einzustellen sind. Und wenn du die Anwendung auf mehr als einem Server installieren willst (sprich: bei Kunden einsetzen willst), dann setz dich bitte hin und "schreib" einen vernünftigen Installer: Auf dem Server wird Firebird installiert - Sinnvoll wäre es den Firebirdserver als "eigenen" FBServer zu installieren (d.h. eigener Dienstname, nicht Default, sowie eigener Port). Damit ist es möglich später im Betrieb einfach den Firebirdserver zu aktualisieren (eben weil das dein eigener ist) ohne Auswirkung auf ggf. andere laufende Anwendungen die Firebird brauchen. Dazu kommen auf dem Server noch Datenbank + Updateprogramm, dazu ein UNC-Pfad freigegeben in dem das Clientsetup liegt + eine Connection.ini in der angepasst an die locale IP/Rechnername die notwendigen Verbindungsdaten stehen. Das Clientsetup wird nun auf den Clients ausgeführt aus diesem UNC PFad raus, der Installer verwendet dabei die Connection.ini um die lokale DBConnection.ini (oder in die Registry) zu schreiben mit der das Programm dann direkt ohne weitere manuelle Konfiguration gestartet werden kann und die DB findet. Sinnvoll wäre es dann noch ein separates Verzeichnis für Updates anzulegen (z.B. als Unterverzeichnis des Clientsetup) in dem die Clients dann nach Updates suchen können, die von Updateprogramm auf dem Server bereit gestellt werden. Der holt sich die Updates von deinem Webserver. Sind die Clients dann entsprechend konfiguriert, dann können diese beim Start nach einem evtl. verfügbaren Update schauen und das selbst installieren, ohne dass ein Admin an jeden Platz laufen muss.... Grüße |
Zitat |
Registriert seit: 28. Nov 2006 Ort: Berlin 418 Beiträge Delphi 7 Enterprise |
#3
Hallo Zwirbel,
programmiere schon seit geraumer Zeite mit der FB-Datenbank. Hier der Weg, den ich bestreite: 1) Habe auf dem Server die Installationsroutine von FB gestartet und die Server-Teile installiert. 2) Auf den Clienten ebenfalls die Installation gestartet und nur die Cliententools installiert. 3) Dann eine Textdatei erstellt mit folgender Zeile: "192.168.10.22:E:\Datenbank\Datenbank.GDB //statt PC2 kann auch die IP-Adresse des Servers genannt werden // Nach dem Muster "Servernamefad zur Datenbank" oder "ServerIPfad zur Datenbank", wobei die IP-Adresse die des Servers ist und E:\ das Originallaufwerk auf dem Server. Für die Clienten müssen diese Laufwerke nicht mal sichbar sein. Der Vorteil dieser Textdatei ist, dass man jederzeit den ort der Datenbank ändern kann ohne das Programm neu zu compellieren. 4)In der Hauptform des Programms (oder dort wo es notwendig ist) dann ein Eintrag z.Bsp.
Delphi-Quellcode:
Gruß, Luckner
procedure TForm1.FormShow(Sender: TObject);
var F: TextFile; begin //Datenbankpfad aus textdatei auslesen und in globale variable dbpfad geschrieben AssignFile(F,'./verbi.txt'); Reset (F); ReadLn (F, dbpfad); DataModule1.IBDatabaseArtikel.DatabaseName := dbpfad; |
Zitat |
Registriert seit: 6. Feb 2006 Ort: Moers 536 Beiträge Delphi 12 Athens |
#4
Was noch wichtig ist:
Auf dem Server-Rechner muss die Firewall die Verbindung zulassen. Einfachste Methode ist, das Programm (fbserver.exe oder fb_inetserver.exe) freizugeben, Alternativ kann man auch den Port (3050) freigeben. Weiter muss sichergestellt sein, wenn man mit der Ip-Adresse verbindet das diese immer gleich ist. Über Rechnernamen kann man auch verbinden, aber ev. wird die Verbindung durch DNS etwas gebremst.
Ralf
Gruß vom Niederrhein |
Zitat |
Registriert seit: 17. Aug 2009 66 Beiträge Delphi 11 Alexandria |
#5
1) Was genau auf dem Server ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service")
Nehmen wir an, eine Datenbank wurde auf dem Server erzeugt und liegt in: "C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPL OYEE.FDB" Es kann sein, dass der Firebirddienst bzw. der entsprechende Port in der Firewall freigegeben werden muss, damit eine COnnection von außen auf die Datenbank zugreifen kann. Eine Freigabe des Datenbankverzeichnisses ist nicht notwendig und nicht sinnvoll.
2) In vielen Tipps habe ich gelesen, dass man mit Aliasen arbeiten soll, nehmen wir an der Alias für die DB soll "MyAlias" lauten. Wo und wie ist das genau einzutragen?
EIn Alias ist in die aliases.conf einzutragen. 3) Was genau auf der Workstation ist zu tun, nach dem Firebird installiert wurde? (Installiert habe ich "Run Firebird in SuperServer mode" / "Run Firebird server as:" -> "Run as a Service")
4) Welche Komponenten (Delphi 10 Seattle) benötige ich minimal
, mit welchen Properties gefüllt, um dann an die Datenbank "..\empbuild\EMPLOYEE.FDB" (bzw. den Alias "MyAlias") ran zu kommen? Derzeit würden die "Params"-Properties einer "TFDConnection"-Komponente so gefüllt aussehen um an die "EMPLOYEE.FDB" ranzukommen, wenn sie lokal auf der Workstation wäre:
Delphi-Quellcode:
Wie sähen die Parameter nun aus, wenn ich auf den Alias "MyAlias" zugreifen will, um damit die Datenbank auf dem Server anzusprechen?
dbs_FB.Params.User_Name=sysdba
dbs_FB.Params.Password=masterkey dbs_FB.Params.DriverID=FB dbs_FB.Params.CharacterSet=UTF8 dbs_FB.Params.PageSize=16384 dbs_FB.Params.Database=C:\Program Files\Firebird\Firebird_3_0\examples\empbuild\EMPLOYEE.FDB Im übrigen fehlt mir in der Auflistung der Server/Host sowie die Portangabe, ohne geht das nicht....
Zusatzfrage: Gibt es Anleitungen, was ich nun eigentlich genau bei der Auslieferung einer mit Delphi entwickelten Applikation zu deployen habe, wenn sie auf eine FB-Datenbank zugreift und die FB-Datenbank auf einem Server liegt? Klar für mich ist, auf dem Server installiere ich Firebird, soweit logisch. Und auf jeder Workstation muss ich FB auch installieren?
Und eine Anleitung was genau ausgeliefert wird, sollte sich bei Firebird finden (allerdings finde ich auch auf die schnell nix). Also Server: Firebird als Serverinstallation, Client: Programm + fbclient.dll + Konfigurationdatei in der die Daten für die Verbindung einzustellen sind. Und wenn du die Anwendung auf mehr als einem Server installieren willst (sprich: bei Kunden einsetzen willst), dann setz dich bitte hin und "schreib" einen vernünftigen Installer: Auf dem Server wird Firebird installiert - Sinnvoll wäre es den Firebirdserver als "eigenen" FBServer zu installieren (d.h. eigener Dienstname, nicht Default, sowie eigener Port). Damit ist es möglich später im Betrieb einfach den Firebirdserver zu aktualisieren (eben weil das dein eigener ist) ohne Auswirkung auf ggf. andere laufende Anwendungen die Firebird brauchen. Dazu kommen auf dem Server noch Datenbank + Updateprogramm, dazu ein UNC-Pfad freigegeben in dem das Clientsetup liegt + eine Connection.ini in der angepasst an die locale IP/Rechnername die notwendigen Verbindungsdaten stehen. Das Clientsetup wird nun auf den Clients ausgeführt aus diesem UNC PFad raus, der Installer verwendet dabei die Connection.ini um die lokale DBConnection.ini (oder in die Registry) zu schreiben mit der das Programm dann direkt ohne weitere manuelle Konfiguration gestartet werden kann und die DB findet. Sinnvoll wäre es dann noch ein separates Verzeichnis für Updates anzulegen (z.B. als Unterverzeichnis des Clientsetup) in dem die Clients dann nach Updates suchen können, die von Updateprogramm auf dem Server bereit gestellt werden. Der holt sich die Updates von deinem Webserver. Sind die Clients dann entsprechend konfiguriert, dann können diese beim Start nach einem evtl. verfügbaren Update schauen und das selbst installieren, ohne dass ein Admin an jeden Platz laufen muss...
Vielen Dank für die ausführlichen Antworten. Ich war halt davon ausgegangen, dass ich nicht der Erste bin, der sich mit diesen basics beschäftigt und jeder der eine Anwendung deployen will, die eine FB-Datenbank verwendet, steht doch vor den gleichen Herausforderungen. Das da seitens der FB-Entwickler nicht mehr an Doku zu haben ist wundert mich. |
Zitat |
Registriert seit: 17. Aug 2009 66 Beiträge Delphi 11 Alexandria |
#6
Hallo Zwirbel,
programmiere schon seit geraumer Zeite mit der FB-Datenbank. Hier der Weg, den ich bestreite: 1) Habe auf dem Server die Installationsroutine von FB gestartet und die Server-Teile installiert. 2) Auf den Clienten ebenfalls die Installation gestartet und nur die Cliententools installiert. 3) Dann eine Textdatei erstellt mit folgender Zeile: "192.168.10.22:E:\Datenbank\Datenbank.GDB //statt PC2 kann auch die IP-Adresse des Servers genannt werden // Nach dem Muster "Servernamefad zur Datenbank" oder "ServerIPfad zur Datenbank", wobei die IP-Adresse die des Servers ist und E:\ das Originallaufwerk auf dem Server. Für die Clienten müssen diese Laufwerke nicht mal sichbar sein. Der Vorteil dieser Textdatei ist, dass man jederzeit den ort der Datenbank ändern kann ohne das Programm neu zu compellieren. 4)In der Hauptform des Programms (oder dort wo es notwendig ist) dann ein Eintrag z.Bsp.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var F: TextFile; begin //Datenbankpfad aus textdatei auslesen und in globale variable dbpfad geschrieben AssignFile(F,'./verbi.txt'); Reset (F); ReadLn (F, dbpfad); DataModule1.IBDatabaseArtikel.DatabaseName := dbpfad; In einer virtuellen Maschine mit Windows Server 2012 R2 habe ich mir den FB Server installiert. Eine "C:\Program Files\Firebird\Firebird_3_0\aliases.conf" existierte nicht, die habe ich entsprechend angelegt. Der Inhalt:
Code:
In ISQL erhalte ich folgende Ergebnisse:
AM_FB_SERVER=C:\AM\Server\FRA\AM_FB_SERVER.FDB
Code:
Ergo, mit Alias funktioniert es nicht, ohne schon. Und wie gesagt, hier habe ich noch gar nicht den Versuch unternommen von einem Client zuzugreifen sondern erst mal auf dem Server selbst. Wenn das schon scheitert, brauche ich es von einem Client aus erst gar nicht probieren. Ich gehe auch mal davon aus, dass hier die Firewall noch keine Rolle spielen kann. Übrigens, Windows hatte ich nach Änderungen in der "aliases.conf" neu gestartet, einfach um sicher zu stellen, dass die Änderung auch greift.
ISQL Version: WI-V3.0.0.32483 Firebird 3.0
Use CONNECT or CREATE DATABASE to specify a database SQL> CONNECT "AM_FB_SERVER"; Statement failed, SQLSTATE = 08001 I/O error during "CreateFile (open)" operation for file "AM_FB_SERVER" -Error while trying to open file -Das System kann die angegebene Datei nicht finden. SQL> CONNECT "C:\AM\Server\FRA\AM_FB_SERVER.FDB"; Server version: WI-V3.0.0.32483 Firebird 3.0 Database: "C:\AM\Server\FRA\AM_FB_SERVER.FDB", User: ------ SQL> Konkrete Beispiele was man nun genau unter Windows Server 2012 R2 bei der Verwendung von Firebird 3 bzgl der Firewall konfigurieren muss, habe ich nicht gefunden. Nun habe ich mich mal an diese Anleitung http://www.line18.de/2012/09/24/fire...abe-windows-7/ gehalten. Erwartungsgemäß hat das nichts daran geändert, dass das mit dem Alias immer noch nicht klappt. Also so frickelig (bzgl. Konfiguration) hatte ich mir das mit FB nicht vorstellt. |
Zitat |
Registriert seit: 17. Aug 2009 66 Beiträge Delphi 11 Alexandria |
#7
Was noch wichtig ist:
Auf dem Server-Rechner muss die Firewall die Verbindung zulassen. Einfachste Methode ist, das Programm (fbserver.exe oder fb_inetserver.exe) freizugeben, Alternativ kann man auch den Port (3050) freigeben. Weiter muss sichergestellt sein, wenn man mit der Ip-Adresse verbindet das diese immer gleich ist. Über Rechnernamen kann man auch verbinden, aber ev. wird die Verbindung durch DNS etwas gebremst. |
Zitat |
Registriert seit: 8. Jun 2002 Ort: Berglen 2.381 Beiträge Delphi 10.4 Sydney |
#8
Vielen Dank für die ausführlichen Antworten. Ich war halt davon ausgegangen, dass ich nicht der Erste bin, der sich mit diesen basics beschäftigt und jeder der eine Anwendung deployen will, die eine FB-Datenbank verwendet, steht doch vor den gleichen Herausforderungen. Das da seitens der FB-Entwickler nicht mehr an Doku zu haben ist wundert mich. http://www.firebirdsql.org/en/books/ Das Firebird Book Second Edition von Helen Borrie. Vorteil: Mit dem Erwerb unterstützt Du die Weiterentwicklung von Firebird und wenn du mit deinem Programm Geld verdienst, dann mach bitte auch bei der Foundation mit http://firebirdsql.org/en/firebird-foundation/ die brauchen Unterstützung, damit es mit Firebird weiter geht.... Und wegen meinen Antworten: Das Thema ist nicht trivial, das stimmt. Und es gibt sicherlich viele die schon was fertiges in der Schublade haben. Aber auf der anderen Seite musst Du dich zwangsläufig mit dem Thema beschäftigen, dem gesamten. Eine Schubladenlösung hilft dir nur wenig. Das ist wie einen Schimmelfleck an der Wand mit etwas Farbe zudecken: das Zeug kommt irgend wann wieder zum Vorschein Grundlagen: https://www.delphi-treff.de/tutorial...ken/interbase/ auch wenn IBX, Firedac ist da nicht wesentlich anders, bzw. die Unterschiede kannst Du mit der Firedac Doku überwinden. Zudem würde ich dir empfehlen, wenn Du nennenswerte Businesslogik hast auch noch einen Blick auf ein ORM (tiOPF, Dorm,...) zu werfen. Die Lernkurve ist steil, aber du wirst die Zeit später locker wieder rein holen. Betrieb/Installation Firebird: Lies das Firebird Buch von Helen. Das brauchst Du nicht von vorne bis hinten durcharbeiten, die für dich uninteressanten Kapitel kannst Du erst mal überspringen. Und für die restlichen Detailfragen die zwangsläufig auftauchen gibt es eine super Quelle: Das Forum hier |
Zitat |
Registriert seit: 17. Aug 2009 66 Beiträge Delphi 11 Alexandria |
#9
Vielen Dank für die ausführlichen Antworten. Ich war halt davon ausgegangen, dass ich nicht der Erste bin, der sich mit diesen basics beschäftigt und jeder der eine Anwendung deployen will, die eine FB-Datenbank verwendet, steht doch vor den gleichen Herausforderungen. Das da seitens der FB-Entwickler nicht mehr an Doku zu haben ist wundert mich. http://www.firebirdsql.org/en/books/ [Grundlagen:
https://www.delphi-treff.de/tutorial...ken/interbase/ auch wenn IBX, Firedac ist da nicht wesentlich anders, bzw. die Unterschiede kannst Du mit der Firedac Doku überwinden. Zudem würde ich dir empfehlen, wenn Du nennenswerte Businesslogik hast auch noch einen Blick auf ein ORM (tiOPF, Dorm,...) zu werfen. Die Lernkurve ist steil, aber du wirst die Zeit später locker wieder rein holen. Betrieb/Installation Firebird: Lies das Firebird Buch von Helen. Das brauchst Du nicht von vorne bis hinten durcharbeiten, die für dich uninteressanten Kapitel kannst Du erst mal überspringen.
Und für die restlichen Detailfragen die zwangsläufig auftauchen gibt es eine super Quelle: Das Forum hier Thx. |
Zitat |
Registriert seit: 8. Jun 2002 Ort: Berglen 2.381 Beiträge Delphi 10.4 Sydney |
#10
Von den Büchern verspreche ich mir ne Menge, leider über einen Monat Lieferzeit.
http://www.ibphoenix.com/products/dvd/developer_dvd |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |