Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi gbak: Error while Trying to open file (https://www.delphipraxis.net/151473-gbak-error-while-trying-open-file.html)

erich.wanker 19. Mai 2010 13:46

Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS

gbak: Error while Trying to open file
 
Hallo Leute,

Delphi-Quellcode:
gbak.exe -b -v -user SYSDBA -pas masterkey Database.gdb Backup.bak
Delphi-Quellcode:
gbak: ERROR:I/O error for file "Database.gdb"
gbak: ERROR:   error while trying to open file
gbak: ERROR:   Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird
gbak: Exiting before completion due to errors

Auf verschiedenen Systemen funktioniert mein Script einwandfrei.
Nur auf einer auf XEN aufgesetzten Win2003 Maschine nicht...

Hardware:
Intel Xeon E5420
Hypervisor: XEN
DOM0 = SUSE LINUX
DOM1 = Win 2003 R2 Service Pack 2 <-- Da läuft meine Installation


??? Hat jemand einen Rat ?


Netzwerk läuft einwandfrei
Dateien existieren am richtigen Fleck
Schreib- Leserecht sind da
Keine zusätzliche Software ist auf der Maschine installiert
Firewall ist deaktiviert
Virenscanner ist keiner drauf


Vielen Dank

Erich

shmia 19. Mai 2010 13:55

Re: gbak: Error while Trying to open file
 
Die "Who Lock Me" Erweiterung installieren und nachschauen welcher Prozess deine Datenbankdatei noch im Zugriff hat.

erich.wanker 19. Mai 2010 14:08

Re: gbak: Error while Trying to open file
 
Hallo shmia..

danke für den Link... aber welche Prozesse auf die Datenbank zugreifen weiß ich:

Mein Programm - das ja weiterhin laufen soll und der fbserver.exe

fbserver.exe
Pid 0x0...
Handle 0x01...
Domain NT-Autorität
User: System

erich.wanker 19. Mai 2010 14:47

Re: gbak: Error while Trying to open file
 
???


Hab grad einen "händischen" Versuch gestartet:

Delphi-Quellcode:
gbak.exe -b -v -user SYSDBA -pas masterkey 192.168.0.1:"C:\pfad\Database.gdb" "C:\pfad\Backup.bak"
.. und so funktioniert es !

Kann man daraus ableiten, wieso
Delphi-Quellcode:
gbak.exe -b -v -user SYSDBA -pas masterkey Database.gdb Backup.bak
NICHT funktioniert (Win2003 R2 SP2) ?

shmia 19. Mai 2010 15:12

Re: gbak: Error while Trying to open file
 
Das Backup muss dann über den Service Manager laufen.
Dazu gibt es die Option -se(rvice):
http://www.firebirdsql.org/manual/gbak-cmdline.html

GBAK.exe darf die Datenbankdatei nicht selbst öffnen sondern muss dem FB-Service sagen er solle ein Backup erstellen.

Nachtrag: die Angabe einer IP-Adresse oder eines Hostnamens muss gbak.exe wohl zwingen über den Service zu arbeiten.

erich.wanker 19. Mai 2010 15:33

Re: gbak: Error while Trying to open file
 
Hallo shmia,

Ganz verstehen tu ichs nicht:

Das Win2003 R2 SP2 - OS läuft via Hypervisor XEN auf der Hardware.
In diesem Zustand sollte das OS ja "ganz normal" funktionieren und reagieren..

Aber gbak fordert Parameter, die normalerweise ja nur benötigt werden, wenn ich eine Remote DB sichern will - oder wenn ich mich in einer Terminal Server Session befinde ?

Alles (Datenbank, Firebird Dienste, Scripte ect..) befinden sich ja auf dem Win2003er - somit ist ja alles "localhost"


Kann ich es irgendwie schaffen, das der ursprüngliche Script wieder funktioniert (hat besondere Gründe..)
Durch irgendeine Einstellung am Win2003-Server ?

Vielen Dank

Erich

mkinzler 19. Mai 2010 15:42

Re: gbak: Error while Trying to open file
 
Ich würde eher das Skript anpassen, relative Pfade sind sowieso gefährlich

shmia 19. Mai 2010 15:47

Re: gbak: Error while Trying to open file
 
Die fbserver.exe hat die Datenbankdatei im exklusiven Zugriff.
Also kann kein weiterer Prozess direkt auf die .gdb-Datei zugreifen.
Statt der festen IP-Adresse würde ich localhost benützen.
Code:
gbak.exe -b -v -user SYSDBA -pas masterkey localhost:"C:\pfad\Database.gdb" "C:\pfad\Backup.bak"

hoika 20. Mai 2010 07:11

Re: gbak: Error while Trying to open file
 
Hallo,

das lokale Protokoll (X-INet ?) wurde bei Win-2003 geändert.
Zugriffe wie deiner sind nicht mehr erlaubt.

Zitat:

Dass das Script läuft wie bisher
Warum benutzt du in der Bat-Datei keine Variablen ?

set dbname = localhost:c:\XXX

gbak -b %dbname%


Wozu soll eigentlich das -v sein (verbose, ich weiss), aber wozu brauchst du das ?)


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr.

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