Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Datenbank Backup (https://www.delphipraxis.net/175639-firebird-datenbank-backup.html)

user0815 5. Jul 2013 09:52

Datenbank: firebird • Version: 2.5 • Zugriff über: none

Firebird Datenbank Backup
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo,
ich habe ein kleines Tool geschrieben das eine Firebird Datenbank zu einem bestimmten Zeitpunkt per Backup sichert.
Die Sicherung kann jeden Wochentag Mo..Fr oder jeden Tag im Monat 1..31 erfolgen. Der Dateiname hat dann z.B. entsprechend die Endung: _Fr

Meine Frage: Ist die Sicherung über die procedure BackupData und den dortigen Aufruf der ShellExecute - gbak.exe so in Ordnung oder sollte ich was beachten, es generell anders machen?

Ich habe das ganze als Setup beigefügt. In der Setup werden auch die Firebird dll´s, usw... entsprechend ins Verzeichnis kopiert. Quellcode ist auch in der Anlage sowie 2 Screenshots: 1x Programm, 1x EXE Verzeichnis

Delphi-Quellcode:
procedure TFormMain.BackupData;
var
  Quelle, Ziel, Dateiname : String;
  Parameter : String;
  Ergebnis : String;
  OK : Boolean;
  BackupResult : Integer;
begin
  OK := TimerBackup.Enabled;
  TimerBackup.Enabled := False;

  if RadioButtonWeekday.Checked
   then Dateiname := TargetDir + 'BackupFile_' + ShortDayNames[DayOfWeek(Date)]
    else Dateiname := TargetDir + 'BackupFile_' + IntToStr(DayOfTheMonth(Date));

  Quelle := '"' + SourceFile + '"';
  Ziel := '"' + Dateiname + '"';

  Parameter := '-v -t -user sysdba -password masterkey '+ Quelle +' '+ Ziel;

  if CheckBoxShowDosWindow.Checked
   then BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW)
    else BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_HIDE);

  if BackupResult <= 32
   then Ergebnis := 'Fail'
    else Ergebnis := 'OK';

  MemoLog.Lines.Insert(0, FormatDateTime(FormatSettings.ShortDateFormat + ' ' + FormatSettings.LongTimeFormat, now)
                        + ' # ' + Ergebnis
                        + ' -> ' + Dateiname);

  while MemoLog.Lines.Count > 100 do
    MemoLog.Lines.Delete(100);

  MemoLog.Lines.SaveToFile(ProgramDirectory + 'log.dat');

  TimerBackup.Enabled := OK;
end;

Lemmy 5. Jul 2013 10:14

AW: Firebird Datenbank Backup
 
Hi,

was mich spontan stört ist das fest vorgegebene Passwort.

Außer: eine Datensicherung ist erst dann eine Datensicherung, wenn Du diese auch wieder herstellen kannst. d.h. auch für die Fehlerfrüherkennung wäre es nicht verkehrt, die Sicherung nach dem Erstellen in einer temporären Datei wieder herzustellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.

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