Einzelnen Beitrag anzeigen

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