AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird - DB Restore

Ein Thema von user0815 · begonnen am 24. Sep 2012 · letzter Beitrag vom 25. Sep 2012
Antwort Antwort
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird - DB Restore

  Alt 24. Sep 2012, 15:14
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Hallo,

nach dem Datenbank Backup komme ich jetzt beim Restore nicht weiter.

Sichere ich den Befehl als .bat, schließe das Programm und führe die .bat aus, dann wird die Datenbank wiederhergestellt.
Delphi-Quellcode:
var
  BackupFile, DatabaseFile, Parameter : String;
  sl : TStringList;
begin
  // ...

  BackupFile := '"' + OpenDialog.FileName + '"';

  if Datenmodul.UniConnection.Server <> ''
   then DatabaseFile := '"' + Datenmodul.UniConnection.Server + ':' + Datenmodul.UniConnection.Database + '"
    else DatabaseFile := '"' + Datenmodul.UniConnection.Database + '"';


  Parameter := '"' + ExtractFilePath(ParamStr(0)) + 'gbak.exe" -rep -v -user sysdba -password masterkey '+ BackupFile +' '+ DatabaseFile;

  sl := TStringList.Create;
  try
    sl.Add(Parameter);
    sl.SaveToFile(BackupDirectory + 'restore.bat');
  finally
    sl.Free;
  end;
Versuche ich das zur Laufzeit, Datenmodul trennen, Aufruf per ShellExecute dann erhalte ich die Fehlermeldung:
gbak: opened file BackupFile
gbak: ERROR:could not drop database DatabaseFile <database might be in use>
gbak: Exiting before completion due to errors


Delphi-Quellcode:
  Datenmodul.UniConnection.Connected := false; // oder Datenmodul.UniConnection.Disconnect;

  Parameter := '-rep -v -user sysdba -password masterkey '+ BackupFile +' '+ DatabaseFile;
  ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW);
Kann ich die Datenbank zur Laufzeit überhaupt wiederherstellen?
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 15:20
Du kannst die Datenbank dann zur Laufzeit wieder herstellen, wenn wirklich niemand mehr auf die Datenbank zugreift.
Du schließt sicher irgendwo eine Verbindung nicht richtig. Oder Du hast noch was offen (2. Client, evtl. von remote, IBExpert, etc...).
Jens
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 15:30
Delphi-Quellcode:
  if not Datenmodul.UniConnection.Connected then
  begin
    Parameter := '-rep -v -user sysdba -password masterkey '+ BackupFile +' '+ DatabaseFile;
    ShellExecute(0,nil,PChar(FormMain.ExeProgramDirectory + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW);
  end;
habe nochmal eine Abfrage vorgepackt, der Code wird ausgeführt mit der obigen Fehlermeldung.
Ein anderes Programm greift nicht auf die DB zu, andernfalls müsste der Fehler doch auch bei der .bat auftreten.
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 15:34
Und wenn Du UniConnection vorher komplett freigibst?
Jens
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 15:35
Hallo,

sinnvoller als -rep ist es die aktuelle DB umzubenennen und die Datenbank wiederherzustellen (wie gesagt ohne -rep).

Wegen dem Code: Mach mal vor dein Shellexecute oder nach deinem DB.Disconnect ein Application.Processmessage

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 15:42
Zitat:
Und wenn Du UniConnection vorher komplett freigibst?
Thx, das hat geholfen, funktioniert jetzt.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#7

AW: Firebird - DB Restore

  Alt 24. Sep 2012, 16:04
Ich würde niemals eine vorhandene Datenbank mit -rep überschreiben. Wenn z.B. das Backup defekt ist oder sonst irgend etwas beim Restore passiert, steht man schnell ohne Datenbank da.

lg,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Firebird - DB Restore

  Alt 25. Sep 2012, 07:50
Zitat:
Ich würde niemals eine vorhandene Datenbank mit -rep überschreiben. Wenn z.B. das Backup defekt ist oder sonst irgend etwas beim Restore passiert, steht man schnell ohne Datenbank da.
Also eher nur mit den Parameter´n gbak -c -v arbeiten und eine bestehende DB, falls überhaupt nötig, manuell ersetzen (copy & paste)?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Firebird - DB Restore

  Alt 25. Sep 2012, 08:06
Guten Morgen,

Variante 1: Kurze Downtime: Backup mit einem anderen DBNamen wieder herstellen, anschließend ggf. testen. Alte DB abhängen, umbenennen und dann die neue DB umbenennen und diese aktivieren

Variante 2: längere Downtime: alte DB abhängen, umbenennen und dann Backup mit dem DBNamen wieder herstellen und ggf. testen und aktivieren.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Firebird - DB Restore

  Alt 25. Sep 2012, 08:16
ich nehme Tor 1 (hätte man mit nachdenken ja auch selber drauf kommen können...)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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