Hallo zusammen,
meine Applikation kann sowohl als Standalone System installiert werden (mit Firebird embedded 2.5) als auch in einem Netzwerk und dann mit Firebird als Dienst auf dem Server. Für Backup/Restore wollte ich die Komponenten IBBackupService und IBRestoreService nutzen, was mit der Serverinstallation auch problemlos funktioniert.
Die embedded-Version gibt mir aber die Fehlermeldung aus: "cannot attach to Services Manager".
Da alles andere in der Applikation auch mit embedded korrekt funktioniert, ist die generelle Einrichtung des embedded Firebird vermutlich OK und das Problem liegt in der Nutzung der Komponente.
Mache ich etwas falsch oder geht das mit embedded und IBBackupService grundsätzlich nicht?
Info: es funktioniert weder mit hostname = "localhost" noch Hostname ="" (leer)
Hier der Quellcode:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TfrmMain.menuBackupClick(Sender: TObject); var Zielordner: String; wjahr, wmonat, wtag: word; slProtokoll: TStringList; begin with dmBISaM_SQL do begin CloseDB; ZConnection1.Disconnect; IBBackupService1.ServerName := ZConnection1.HostName; Zielordner := 'C:\Backup'; slProtokoll := TStringList.Create(); if length(Zielordner) > 0 then with IBBackupService1 do begin DecodeDate(date, wjahr, wmonat, wtag); BackupFile.clear; Zielordner := Zielordner + '\' + Format('%0.4d', [wjahr]) + Format('%0.2d', [wmonat]) + Format('%0.2d', [wtag]) + '_BISAM_SQL.FBK'; BackupFile.add(Zielordner); DatabaseName := ZConnection1.Database; attach; try ServiceStart; while not eof do slProtokoll.add(getnextline); if Active = True then detach; except on E: Exception do begin; slProtokoll.Add(E.Message); showMessage(slProtokoll.text); end; end; ShowMessage(Format(rsBackupCompleted, [Zielordner, ServerName])); slProtokoll.Free; OpenDB; end; end; end; |
Habe schob Stunden gegoogelt, aber keinen echten Hinweis gefunden, ob es gar nicht funktionieren kann und ich auf einen ganz anderen Weg umstellen muss (GBAK, andere Komponenten,...) oder ob es sich nur um einen Fehler in meinem Code handelt und mit weniger Aufwand gelöst werden kann, als das Verfahren komplett umzustellen.
Danke für jeden Hinweis
Siegbert
Moderiert von Narses: Code- durch Delphi-Tags ersetzt