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?