gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

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

Moderator: thorben.braun

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

Hallo zusammen,

mein Problem habe ich schon gelöst, ich würde nur gern wissen, warum das so
ist, wie es ist.

Für meine Update-Routine nutze ich gbak unter Apache/PHP, was auch schon
länger problemlos läuft.

Vor einigen Monaten musste ich aus organisatorischen Gründen die Start-
Optionen für Apache/PHP und den FireBird-Server ändern.

Apache wird als Windows-Service und der FireBird-Server als Windows-
Schedule-Task (ohne Benutzer-Anmeldung) gestartet.

Alles läuft wunderbar.

Am Wochenende musste seit langem mal wieder den FireBird-Server manuell
runterfahren, um eine Test-DB kopieren zu können.

Danach den FB-Server per Batch-Datei neu gestartet und Alles lief problemlos,
mit einer Ausnahme, gbak brach immer mit dem Return-Wert 1 ab, aber ohne
jegliche weitere Meldung / Hinweise.

Nach langem Suchen habe ich dann die Ursache gefunden. Der FB-Server muß
"als Administrator" gestartet werden und dann verrichtet auch gbak wieder
problemlos seinen Dienst.

Warum ist das so ?

Ergänzung: Das Benutzer-Konto hat Administrator-Rechte.

Danke und Gruss
Hamburgo
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Unter Windows sollte der Firebird-Server als Dienst eingerichtet sein.
Dann kann man diesen über die Diensteverwaltung (auch im Taskmanager) starten und stoppen, sowie auch per Shellkommandos.
Nachträglich kann man das auch per "instsvc.exe" einrichten.
http://www.destructor.de/firebird/instsvc.htm

Nun, seit Windows 7 wissen wir, dass ein Admin-Konto für vieles kein Admin ist.
Der FB-Server benötigt aber entsprechende Rechte um auf die Datenbanken zuzugreifen.
Bei mir läuft die Firebird.exe als Dienst unter dem SYSTEM-Konnto.
Hamburgo
Beiträge: 125
Registriert: Di 28. Mai 2019, 17:28

Hallo bfuerchau,

der normale DB-Zugriff via PHP läuft problemlos, egal ob der
FB-Server normal oder als Administrator gestartet wurde.

Aus PHP heraus kann ich die wildesten DB-Aktivitäten ausführen,
ohne jegliche Einschränkungen.

Nur gbak legt Wert darauf, dass der FB-Server als Administrator
gestartet wird.

Ich kann ja damit leben, auch wenn es dafür keine genaue, nach-
vollziehbare Erklärung gibt. So häufig kommt das ja nicht vor.

Aber komisch finde ich das schon.

Eigentlich müsste doch der FB-Server entscheiden wer mit welchen
Rechten mit ihm kommunizieren darf oder halt nicht und dann PHP
und gbak gleich behandeln.

Aber das ein Anwendungs-Programm, wie gbak da rumzickt, verstehe
ich noch nicht.
Benutzeravatar
martin.koeditz
Beiträge: 446
Registriert: Sa 31. Mär 2018, 14:35

Guten Morgen,

wie lässt du gbak laufen? Als Kommandozeilenaufruf? Oder über PHP selbst?

Wenn du mit gbak direkt auf die DB zugreifst, kann das beschriebene Problem schon auftauchen, da gbak exklusiven Zugriff einfordert. Besser ist die Verwendung des Service-Managers. Hierfür wird die laufende Firebird-Instanz (Engine) verwendet.

Beispiel:

Code: Alles auswählen

gbak -backup -service localhost:service_mgr /var/firebird/produktiv.fdb /backups/produktiv.fbk
Siehe auch https://firebirdsql.org/file/documentat ... up-speedup

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

GBAK kann auch den Backup/Restore über den FB-Server direkt machen, statt selbsständig.
Über " -service <Computer>:service_mgr" und Angabe des vollständigen Pfads zur DB und dem Backup übernimmt das der Dienst, der dazu auch laufen muss.
Das muss ich auch ab und an so machen, da mir häufig beim Restore gemeldet wird, dass der Backup bereits anderweitig geöffnet ist.
Während des Backups wird per Snapshot gesichert, so dass auch ein Weiterarbeiten durchaus möglich wäre.
Antworten