Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird-Datenbank im Netzwerk (https://www.delphipraxis.net/192572-firebird-datenbank-im-netzwerk.html)

Helmi 1. Mai 2017 19:16

Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeos

Firebird-Datenbank im Netzwerk
 
Hallo,

nachdem ich mich heute in einem Testprojekt an mein erste Firebird-Datenbank über Zeos herangewagt habe,
wollt ich nun an mein eigentliches Projekt ran.

Dabei will ich ein Programm schreiben, dass auf meinem Server läuft und Daten in eine Datenbank schreibt.
Die Clients sollen dann aus der Datenbank lesen und die Daten verarbeiten.

Soweit so gut. Nun dacht ich in meinem jugendlichen Leichtsinn, dass ich eine Datenbank in ein Netzwerklaufwerk
erstelle und in der ZConnection von Zeos einfach den Pfad angebe.
(beispielhaft: \\Server\Datenbank\test.fdp)

Nur, wenn ich das mache und das Programm ausführen lasse, dann erhalte ich einen Fehler, dass das Verbinden
nicht möglich sei (Datenbank nicht gefunden).

Nur, wie geb ich denn eine Datenbank, die im Netzwerk liegt, richtig an?
Bzw. was mach ich generell falsch?

mkinzler 1. Mai 2017 19:18

AW: Firebird-Datenbank im Netzwerk
 
Liegt die Datenbank auf dem Rechner, auf dem der Datenbankserver läuft?
Pfad muss aus Serversicht sein, oder ein Alias.

Helmi 1. Mai 2017 20:06

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

Zitat von mkinzler (Beitrag 1369672)
Liegt die Datenbank auf dem Rechner, auf dem der Datenbankserver läuft?
Pfad muss aus Serversicht sein, oder ein Alias.

Firebird läuft auf dem Server und das Pfad wäre der selbe beim Server als auch beim Client

haentschman 1. Mai 2017 20:20

AW: Firebird-Datenbank im Netzwerk
 
Hallöle...:P
Was mkinzler meinte ist der Pfad aus Serversicht. Das kann nie der Pfad mit \\Server\Datenbank... am Anfang sondern z.B. mit C:\Datenbank... sein.

Helmi 1. Mai 2017 20:31

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

Zitat von haentschman (Beitrag 1369678)
Hallöle...:P
Was mkinzler meinte ist der Pfad aus Serversicht. Das kann nie der Pfad mit \\Server\Datenbank... am Anfang sondern z.B. mit C:\Datenbank... sein.

aber welchen Pfad gib ich dann beim Client an um die Datenbank zu finden?

nahpets 1. Mai 2017 20:37

AW: Firebird-Datenbank im Netzwerk
 
Auf dem Server in der Form:
Delphi-Quellcode:
Laufwerk:\Verzeichnis\Dateiname.fdb


Vom Client im Netz:
Delphi-Quellcode:
\\Freigabename\Verzeichnis\Dateiname.fdb

Delphi-Quellcode:
\\Server\Verzeichnis\Dateiname.fdb

haentschman 1. Mai 2017 20:39

AW: Firebird-Datenbank im Netzwerk
 
Beispiel ohne Syntaxprüfung:

Host: //Server/Freigabe (evt. Port /3050)
Datenbank aus Serversicht: C:\Datenbank\Test.fdb
...oder über den Alias, der die Datenbank auf dem Server kennt. Das bedeutet das der Client das Serverlaufwerk nicht kennt...nue den Alias.

@nahepets: Wir reden über die Serveranbindung im Multiuserbetrieb und nicht über ein Netzlaufwerk. :wink:

mkinzler 1. Mai 2017 20:45

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

aber welchen Pfad gib ich dann beim Client an um die Datenbank zu finden?
Entweder der Pfad aus Serversicht (<lw>:\<Pfad>\<Datenbank> bzw. /<Pfad>/<Datenbank>
Oder einen Alias der in der Config steht.

Btw. Datenbanken sollten nicht in einer Freigabe liegen

hoika 2. Mai 2017 04:40

AW: Firebird-Datenbank im Netzwerk
 
Hallo,
Servername sei DBSERVER
Pfad auf dem Server: C:\Data\Data.Fdb

Connectionstring ist dann DBSERVER:C:\Data\Data.Fdb

Statt dem Servernamen kann man auch die IP-Nummer des Servers benutzen,
falls die statisch ist. Name ist aber besser.

mschaefer 2. Mai 2017 04:53

AW: Firebird-Datenbank im Netzwerk
 
Das oben genannte ist schon richtig, meines Wissens kann Zeos nicht auf Netzwerk-Pfade zugreifen, sodass die Datenbank auf einer internen Festplatte des Servers liegen muss.

Helmi 2. Mai 2017 04:58

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

Zitat von mschaefer (Beitrag 1369736)
Das oben genannte ist schon richtig, meines Wissens kann Zeos nicht auf Netzwerk-Pfade zugreifen, sodass die Datenbank auf einer internen Festplatte des Servers liegen muss.

Was meinst du mit interner Festplatte?

hoika 2. Mai 2017 04:58

AW: Firebird-Datenbank im Netzwerk
 
Hallo,
ZEOS kommuniziert per TCP-IP mit dem Datenbankserver.
Netzlaufwerke des Clients spielen überhaupt keine Rolle!

ZEOS sagt dem DB-Server, mache mal DB XY auf,
ein Netzlaufwerk Z kennt der Server natürlich nicht.

Für Tests sollte man die 2.5er Version von FB benutzen, nicht die 3er.

Helmi 2. Mai 2017 05:02

AW: Firebird-Datenbank im Netzwerk
 
und wie richtet man das richtig ein?

mschaefer 2. Mai 2017 05:06

AW: Firebird-Datenbank im Netzwerk
 
Die Datenbank kann nicht auf einem Netzwerk - Laufwerk des Servers liegen, also kein NAS.

Uhps ja an Zeos liegt es nicht :-S (Danke ) ist eine Beschränkung des Firebird Servers.

RWarnecke 2. Mai 2017 06:04

AW: Firebird-Datenbank im Netzwerk
 
Hallo,

folgendes funktioniert mit allen Datenbankkomponenten :
  1. Firebird-Server (Super oder Classic) auf dem Server installieren (Servername: FirebirdServer)
  2. Lokal auf dem Server zum Beispiel in Pfad C:\FirebirdDB die Datenbank TestDB.fdb ablegen
  3. Dem Firebird-Server Dienst auf den eben genannten Pfad Schreib-/Lese Rechte geben
  4. Auf Deinem Client in der Datenbank Komponente für die Datenbank den folgenden Pfad angeben : FirebirdServer:C:\FirebirdDB\TestDB.fdb (Statt FirebirdServer kann hier auch die IP-Adresse des Servers eingegeben werden.)

Sind in der Datenbank Komponente zwei Felder, eines für den Server und eines für die Datenbank, dann muss bei Server nur der Name (FirebirdServer) oder die IP-Adresse des Servers drinstehen. Für das Feld Datenbank kommt dann der komplette Pfad C:\FirebirdDB\TestDB.fdb rein. Zusätzlich noch die Angabe von Username (sysdba) und Passwort (masterkey) und schon solltest Du eine Verbindung hergestellt haben.

hoika 2. Mai 2017 06:52

AW: Firebird-Datenbank im Netzwerk
 
Hallo,
Zitat:

Uhps ja an Zeos liegt es nicht :-S (Danke ) ist eine Beschränkung des Firebird Servers.
Beschränkung würde ich das nicht nennen, sondern eher eine Sicherheitsmassnahme.
Damit nicht mehrere Programme gleichzeitig unkontrolliert auf die physische Datei (.Fdb) zugreifen,
ist Firebird hier der (einzige) Chef mit Datenzugriff.
Die Synchronisation der Zugriffe macht Firebird dann selbst.

Bei der Classic-Variante greifen zwar auch mehrere Prozese auf die Fdb-Datei zu,
machen das aber über eine FB-eigene Synchronisation.

Und noch einmal der Hinweis, nimm zuerst mal FB2.5 und nicht FB3.0,
weil in FB3 der Zugriff (Connect) geändert wurde, davon weiss ZEOS aber nichts.
Es gibt eine Anleitung, wie man das alte Connect wieder aktivieren kann,
aber erst mal FB2.5 (SS=Superserver) nehmen, ist einfacher.

bra 2. Mai 2017 09:14

AW: Firebird-Datenbank im Netzwerk
 
Auf die Datenbank muss über einen lokalen Pfad zugegriffen werden, weil sonst der Firebird-Dienst die DB vermutlich nicht erreichen kann:

Servername:c:\Pfad\zur\Datenbank.fdb

Helmi 6. Mai 2017 09:29

AW: Firebird-Datenbank im Netzwerk
 
Hallo,

komm erst heute wieder dazu, weiterzumachen.

Zitat:

Zitat von RWarnecke (Beitrag 1369747)
  1. Firebird-Server (Super oder Classic) auf dem Server installieren (Servername: FirebirdServer)
  2. Lokal auf dem Server zum Beispiel in Pfad C:\FirebirdDB die Datenbank TestDB.fdb ablegen
  3. Dem Firebird-Server Dienst auf den eben genannten Pfad Schreib-/Lese Rechte geben
  4. Auf Deinem Client in der Datenbank Komponente für die Datenbank den folgenden Pfad angeben : FirebirdServer:C:\FirebirdDB\TestDB.fdb (Statt FirebirdServer kann hier auch die IP-Adresse des Servers eingegeben werden.)

Nr. 1 und zwei hab ich gemacht - nur wie geb ich dem FB-Server-Dienst die Schreib-/Lese-Rechte auf den Ordner?

bnreimer42 6. Mai 2017 09:46

AW: Firebird-Datenbank im Netzwerk
 
Wenn Du den Server als Applikation startest, dann sind es die Rechte des Users, der den Server startet.

Wenn Du den Server als Service startest, dann ist es das lokale Systemkonto, was i.R. auf alle lokalen Dateien genügend Rechte hat.
Wie bei jedem Service kannst Du auch eine andere Kennung angeben mit Windows-Mitteln.

Im Setup-Programm kannst Du die Variante am einfachsten festlegen. Installation als Service ist der Standardwert.

Helmi 6. Mai 2017 10:07

AW: Firebird-Datenbank im Netzwerk
 
bedarfs auch einem Port?

Olli73 6. Mai 2017 11:18

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

Zitat von Helmi (Beitrag 1370401)
bedarfs auch einem Port?

Standard-Port ist 3050, den kannst du in der firebird.conf-Datei ändern. Dann muss er aber auch angegeben werden:

http://www.firebirdfaq.org/faq259/

bnreimer42 7. Mai 2017 09:45

AW: Firebird-Datenbank im Netzwerk
 
Zitat:

Zitat von Olli73 (Beitrag 1370410)
Zitat:

Zitat von Helmi (Beitrag 1370401)
bedarfs auch einem Port?

Standard-Port ist 3050, den kannst du in der firebird.conf-Datei ändern. Dann muss er aber auch angegeben werden:

http://www.firebirdfaq.org/faq259/

Nach Ändern in der firebird.conf z.B.
Code:
 RemoteServicePort = 3055
Neustart des Services nicht vergessen.

IBExpert 7. Mai 2017 10:18

AW: Firebird-Datenbank im Netzwerk
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

keine Ahnung ob sich deine Anfrage gerade mit einer Hotlinesession für einen Kunden überschneidet, klingt aber ähnlich.

Der Betrieb einer Firebird Datenbank auf einem Netzwerklaufwerk ist mit einem FB3 Server im Application Modus
möglich, es muss dann aber ein alias in databases.conf eingetragen werden und erst da darfst du aufs Netzwerklaufwerk
verbinden (könnte ggf auch mit der aliases.conf in fb25 gehen, hab ich aber nicht getestet)

Embedded geht das sowieso, aber embedded sollte immer nur ein Computer auf eine Datenbank gehen, sonst kann das gewaltig nach
hinten los gehen.

Wenn die DB aber wie oben auf einem Netzwerklaufwerk liegt, wird dir die Performance um die Ohren fliegen, wie ich gerade in einem
Test gemerkt habe, daher muss man seine Kunden schon bei möglicher Wartezeit als sehr belastbar einstufen, eine solche Lösung
anzubieten (siehe angehängte Benchmark Grfik, werte unter 100% sind schlecht, 2% ist unterirdisch)

Versuch zu unterscheiden zwischen Netzwerkfähiger Version (nur da gibt es gemeinsame Daten, braucht dann aber auf einem Rechner
einen installierten Firebird Server, muss dann aber kein echter server sein, kann auch client computer sein, der dann nur an bleiben
muss, wenn andere an die daten wollen) und Einzelplatzversion (da hat jeder Rechner eigene Daten).
eigene Daten

Alles andere wird keine akzeptable Lösung sein

bnreimer42 7. Mai 2017 10:59

AW: Firebird-Datenbank im Netzwerk
 
Gibt es für das Umgehen der Sperre des Zugriffs auf Netzlaufwerke nicht die mit sehr langer Warnung versehene Option?
Code:
#RemoteFileOpenAbility = 0
in der firebird.conf (Zumindest in 2.5)

Helmi 10. Mai 2017 19:03

AW: Firebird-Datenbank im Netzwerk
 
so - nachdem ich den Port 3050 auf dem Server freigegeben habe, hats auch mit dem Zugriff übers Netzwerk hingehauen

hoika 10. Mai 2017 19:24

AW: Firebird-Datenbank im Netzwerk
 
Hallo,

zu RemoteFileOpenAbility
https://firebirdsql.org/file/documen...rmtfilopn.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz