![]() |
Datenbank: Firebird • Version: 2.0.7 • Zugriff über: UniDAC
Firebird embedded vs. Server
Hallo,
ich habe hier eine EXE mit TInterbaseUniProvider sowie einer TUniConnection. Die Connection zur DB baue ich wie folgt auf.
Delphi-Quellcode:
Im (Debug) EXE Verzeichnis liegen die folgenden Dateien: employee.fdb, fbclient.dll, firebird.conf, firebird.msg, FirebirdTest.exe, ib_util.dll, icudt30.dll, icuin30.dll, icuuc30.dll, Microsoft.VC80.CRT.manifest, msvcp80.dll, msvcr80.dll
procedure TForm1.Button1Click(Sender: TObject);
begin UniConnection.Server := 'localhost'; UniConnection.Database := ExtractFilePath(ParamStr(0)) + 'employee.fdb'; UniConnection.Connected := true; if not UniConnection.Connected then exit; UniQuery1.Active := UniConnection.Connected; end; procedure TForm1.Button2Click(Sender: TObject); begin UniConnection.Server := ''; UniConnection.Database := ExtractFilePath(ParamStr(0)) + 'employee.fdb'; UniConnection.Connected := true; if not UniConnection.Connected then exit; UniQuery1.Active := UniConnection.Connected; end; Lokal habe ich hier auf dem Win7 Rechner den Firebird Server als Dienst laufen. Drücke ich auf Button1 so werden mir die Daten einer Tabelle angezeigt. Drücke ich auf Button2 so erhalte ich die nachfolgende E:Exception Meldung: unavailable database Kopiere ich alle Daten aus diesem Verzeichnis & starte die EXE auf einem anderen PC (wo kein Firebird Server läuft) so werden mir die Daten bei Button2 Click angezeigt. Ich dachte man kann auf einem Rechner sowohl die Server als auch die Embedded Version ausführen. Was mache ich falsch ? |
AW: Firebird embedded vs. Server
Wenn ich es noch richtig weiß, wird glaube ich primär auf den Server zugegriffen, wenn dieser gestartet ist oder als Dienst läuft.
|
AW: Firebird embedded vs. Server
Beim embedded (Server) Client wird beim Zugriff über lokales Protokoll anstatt auf den Server direkt auf die Datenbankdatei zugegriffen. Beim Zugriff über Netzwerkprotokoll ( Server=loclahost) wird auf den Server(dienst) zugegriffen. Da der embedded Client von Firebird < 2.5 auf der SuperServer-Architektur basiert, wird exklusiver Zugriff auf die datenbankdatei benötigt. Das aber der Server schon darauf zugreift wird das nicht möglich sein. Ab Firebird 2.5 wird die SuperClassic Architektur verwendet, hier geht der parallele Zugriff.
|
AW: Firebird embedded vs. Server
Danke für die Antworten.
Anscheinend muss der Dienst nur vorhanden sein. "Button2Click" funktioniert auch nicht wenn ich den Dienst manuell beende oder deaktiviere. |
AW: Firebird embedded vs. Server
Komsich. Was für ein Fehler wird genau angezeigt/geloggt?
|
AW: Firebird embedded vs. Server
Wenn ich den Dienst beende dann erhalte ich jeweils die nachfolgenden E:Exception Meldung:
Button2Click: "unavailable database" anschließend Button1Click (ist ja auch logisch ohne Dienst): Unable to complete network request to host "@1". Failed to establish a connection. Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. |
AW: Firebird embedded vs. Server
Un in der Logdatei?
|
AW: Firebird embedded vs. Server
HI,
was für ne fbClient.dll wird denn verwendet? die Client.DLL vom Server oder eine umbenannte fbembedded.dll? Grüße |
AW: Firebird embedded vs. Server
LOG: Anwendung gestartet + getestet, dann Dienst beendet und Anwendung nochmal gestartet + getestet.
Code:
Ist eine umbenannte fbembed.dll zu fbclient.dll (Dateiversion: 2.5.1.26351 aus 32-bit Embedded)XXXXX (Client) Fri Apr 27 13:12:02 2012 Guardian starting: "J:\Program Files (x86)\Firebird\bin\fbserver.exe" XXXXX (Client) Fri Apr 27 13:12:58 2012 "J:\Program Files (x86)\Firebird\bin\fbserver.exe": normal shutdown XXXXX (Client) Fri Apr 27 13:13:12 2012 INET/inet_error: connect errno = 10061 XXXXX (Client) Fri Apr 27 13:13:15 2012 INET/inet_error: connect errno = 10061 Sollte doch keine Probleme trotz Win7 64bit geben |
AW: Firebird embedded vs. Server
Es wird ein Netzprotokoll verwendet, dass veranlasst den Guardian, den Server zu starten.
|
AW: Firebird embedded vs. Server
ne, beides war beendet (im obigen LOG), habe dann FirebirdServerDefaultInstance + FirebirdGuardianDefaultInstance manuell gestartet.
Anwendung getestet, Netzwerk OK, Embedded nicht OK. Beide Dienste beendet, erneuter Test, Fehlermeldungen wie siehe oben. Im Log hätte ich den ersten Eintrag entfernen müssen. |
AW: Firebird embedded vs. Server
Hi,
dann schau mal ob in UniConnection irgend wo noch ein Protokol einstellbar ist. Beim Embedded muss das auf local stehen. Grüße |
AW: Firebird embedded vs. Server
Auch dort wird aber versucht per IP (Netzprotokoll) zuzugreifen.
Zitat:
|
AW: Firebird embedded vs. Server
Bei embedded muss es UniConnection.Server := ''; sein, dann funktioniert es auf einem anderen Win7 PC ohne Firebird Server Installation.
Zitat:
Der Doppelte LOG Eintrag (im Abstand 3 sec reproduzierbar) entsteht wenn ich den Server Dienst beende & versuche per UniConnection.Server := 'localhost'; zuzugreifen. |
AW: Firebird embedded vs. Server
Zitat:
|
AW: Firebird embedded vs. Server
Es funktioniert.
Aus der README_embedded: Zitat:
Der Win7 Rechner auf dem das mit der fbclient.dll lief ist ein 32bit, meiner ein 64bit. k.a. ob es damit zusammenhängt. |
AW: Firebird embedded vs. Server
Zitat:
Die Dll muss passend zur Exe sein. (32Bit/64Bit). Vermutlich wurde aber eine andere fbclient.dll verwendest (syswow64), welche nicht embedded war. |
AW: Firebird embedded vs. Server
@RWarnecke: nutze ich für die Embedded-Version 'localhost' dann erhalte ich die folgende Fehlermeldung:
Zitat:
|
AW: Firebird embedded vs. Server
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz