Erste Geh-Versuche unter PHP7.3.7 mit FB 3.0

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
Hamburgo
Beiträge: 14
Registriert: Di 28. Mai 2019, 17:28

Di 6. Aug 2019, 18:24

Hallo zusammen,

unter FB 3.0 scheint wohl einiges anders zu laufen, wie bis FB 2.5.

Bisher hat es nie Probleme gemacht, wenn ich parallel zu PHP die Datenbank auch im DB-Manager, z.B. IbExpert, geöffnet hatte.

Nun spuckt fbird_connect () eine Fehler-Meldung aus:
I/O error during "CreateFile (open)" operation for file ....
Error while trying to open file
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.

Was muss ich machen, damit diese Meldung nicht mehr erscheint ?

Danke und viele Grüße
Bernd
bfuerchau
Beiträge: 117
Registriert: Mo 7. Mai 2018, 18:09

Do 8. Aug 2019, 09:44

Bei FB3.0 gibt es i.W. keinen Unterschied mehr zwischen einem "embedded" Zugriff und einem Server-Zugriff.
Allerdings wird die Datenbank bei einem embedded Zugriff gegen einen 2. Zugriff nun gesperrt. Prüfe als bei der Verbindung, ob du ggf. einen Open als "Embedded" definiert hast.
Hamburgo
Beiträge: 14
Registriert: Di 28. Mai 2019, 17:28

Do 8. Aug 2019, 16:03

Hallo Befuerchau,

danke für die Info, mit der ich allerdings wenig anfangen kann.

Ich habe etliche Seiten angeschaut, wie das mit Embedded / Classic-Server
unter 3.0 zu konfigurieren ist und ich habe auch einiges ausprobiert, aber
geholfen hat das alles erstmal nichts.

Wobei ich auch immer unsicher bin, ob eine geänderte Config überhaupt
vom Fb-Server angenommen wird oder verworfen wurde.

Das Server-GUI gibt ja nicht viel Info's her. Gibt es irgendwo ein Tool, womit
man auslesen kann, mit welcher Konfiguration der Server derzeit tatsächlich
läuft ?

Über Try & Error habe ich dann aber doch noch das Problem aus der Welt
schaffen können.

Verursacher war IbExpert. In den Verbindungs-Eigenschaften der Datenbank
habe ich unter Server / Protokoll von "local default" auf "local, loopback" ge-
wechselt und schon war alles paletti.

Warum auch immer ?!?!

Danke und Gruß
Bernd
Benutzeravatar
martin.koeditz
Beiträge: 121
Registriert: Sa 31. Mär 2018, 14:35

Fr 9. Aug 2019, 09:54

Hi Bernd,
Verursacher war IbExpert. In den Verbindungs-Eigenschaften der Datenbank
habe ich unter Server / Protokoll von "local default" auf "local, loopback" ge-
wechselt und schon war alles paletti.
Mittels "local default" wird die Datenbank "exklusiv", d.h. im embedded-Modus, geöffnet. Damit kann der Firebird-Server, der ja im Netzwerkmodus arbeitet, selbst nicht mehr auf die DB zugreifen. Stellst du die Verbindung jedoch auf "loopback", wird wieder die Netzwerkschicht und damit der Server verwendet.

Gleiches Problem beim Backup. Wenn ich gbak direkt auf die DB ausführe, wird der embedded-Modus verwendet. Dann kann ich die Datenbank auch nicht mehr öffnen. Deshalb sollten die Backups immer über den Service Manager ausgeführt werden.

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 117
Registriert: Mo 7. Mai 2018, 18:09

Fr 9. Aug 2019, 10:24

Vor 3.0 gab es eine eigene FBClient.dll, die den embedded Server bereits enthielt.
Diese Lösung gibt es für 3.0 nun nicht mehr.
3.0 hat nun auch keine differenzierten Installationsmöglichkeiten, was die Saceh vereinfacht. Zumal 3.0 nun grundsätzlich SMP-fähig ist, also mehr als 1 Thread für 1 DB. Damit gibt es nun saubere Parallelabfragen.
In den Verbindungseigenschaften gibt man den Servertyp nun an, und der FBServer entscheidet dann, ob die DB im Multi- oder Single-Mode betrieben wird.
Der Nachteil des Embedded/Single-Moodes ist jedoch auch, dass man dann selber auch nicht mehrere Abfragen, z.B. für Optimierungen, parallel durchführen kann.
Mittels 3.0 kann man nun auch einen FBServer einrichten und trotzdem im Single-Mode über diverse Datenbanken arbeiten.
Antworten