Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Datenbankbackup wieder herstellen (https://www.delphipraxis.net/23856-firebird-datenbankbackup-wieder-herstellen.html)

theomega 10. Jun 2004 21:40


Firebird Datenbankbackup wieder herstellen
 
Hallo Leute,
gerade versuche ich verzweifelt ein Datenbank-Backup wiederherzustellen. Gebackupt habe ich über den Komponenten TIBBackupService (Standart von Delphi 7 Enterprise) via diesem Code:
Delphi-Quellcode:
bkresmain := TIBRestoreService.Create(nil);

bkmain.DatabaseName := ini.ReadString('database','databasename','');
bkmain.Params.Text := 'password='+ini.ReadString('database','password','')+#10#13+
'user_name='+ini.ReadString('database','user_name','');
bkmain.BackupFile.Add(ini.ReadString('backup','path','')+'\'+floattostr(now)+'.bak');
bkmain.LoginPrompt := false;


bkmain.Active := true;
bkmain.ServiceStart;
bkmain.Active := false;
das hat auch immer funktioniert und ich will jetzt genau eine von den Backups wiederherstellen. Also habe ich mit dem IBExpert (extra-software) das Backup wiederhergestellt. Es ensteht dann auch wieder eine Datenbank-Datei nur kann ich diese nicht lesen, weil Firebird/IBExpert den Fehler meldet:

Code:
Database xxx shutdown
Die Datenbank-datei hat aber eine realsitische größe.

Hat jemand eine Idee wie ich doch wieder an meine Dateien kommen könnte. Eine Fehlerursache könnte sein: evtl ist TIBBackupService nicht mit Firebird 1.5 kompatible.

WEr hat mir eine Idee?

Danke und Grüße
TO

Marcel Gascoyne 10. Jun 2004 22:11

Re: Firebird Datenbankbackup wieder herstellen
 
Da ist wohl die Datenbank offline geschaltet. Könnte an Deinem Tool liegen. Mit dem Kommandozeilentool gfix kannst Du die Datenbank wieder online schalten:

Code:
gfix -online -user sysdba -pass <kennwort> <server>:<datenbank>
Warum sicherst Du nicht mit gbak ? Das läßt sich auch prima aus dem Taskplaner von Windows starten.

Gruß,
Marcel

Hansa 10. Jun 2004 23:03

Re: Firebird Datenbankbackup wieder herstellen
 
Zitat:

Zitat von theomega
evtl. ist TIBBackupService nicht mit Firebird 1.5 kompatible.

So siehts fast aus. Und das wurde vor 2 Jahren auch so angekündigt. IBX unterstützt aus kommerziellen Gründen kein Firebird. Ich könnte Dir den Source für ein Backup mit FIBplus schicken. Das geht. :mrgreen:

[EDIT] mit 1.0 Rest muß ich :P testen !!

theomega 11. Jun 2004 12:10

Re: Firebird Datenbankbackup wieder herstellen
 
hm, bringt mir jetzt dummerweise wenig, weil ich an das Backup dranmuß! Würde es was bringen einen Interbase-Server drauszumachen und dann in eine IB-datenbank wiederherzustellen?

Hansa 11. Jun 2004 12:39

Re: Firebird Datenbankbackup wieder herstellen
 
Das wäre wohl die logische Konsequenz. Geht das Backup dann, so war es tatsächlich eine Inkompatibilität. Falls es immer noch nicht geht, so liegt es an Deinem Programm. :mrgreen:

theomega 11. Jun 2004 12:41

Re: Firebird Datenbankbackup wieder herstellen
 
oki, dafür kann ich doch die Interbase-Version von der Delphi 7 CD nehmen oder? Habe damit noch nie gearbeitet!

Hansa 11. Jun 2004 12:46

Re: Firebird Datenbankbackup wieder herstellen
 
Klar geht die, aber wieso muß das überhaupt mit einem Delphi-Prog restored werden ?? Warum verwendest du nicht erst mal IBexpert, um zu sehen was Sache ist :?:

theomega 11. Jun 2004 12:49

Re: Firebird Datenbankbackup wieder herstellen
 
mach ich doch auch, oder kommt das nicht klar oben raus ? *G* Der IBExpert resort es auch richtig nur bekomm ich die datenbank nacher nichtmehr geöffnet!

Jens Schumann 11. Jun 2004 12:55

Re: Firebird Datenbankbackup wieder herstellen
 
Hallo theomega,
ich verwende ebenfalls der Firebird Server unter WinXP SP1.^
Ich habe die Version 1.5.0.4201 Firebird 1.5 Release Candidate.

Mit Delphi 7 SP 1.1 habe ich gereade ein kleines Testprogramm mit den
Komponenten TIBBackupService und TIBRestoreService gebastelt.
Ich verwende die original D7 IBX-Komponenten (d.h. ohne Update).
Die Datenbank habe ich ebenfalls unter dem Firebird erstellt.
Mit der IBOConsole von L Mengoni Version 1.1.9.6

Es funktioniert einwandfrei. Kann es sein, dass Dein Problem an einer anderen Stelle liegt?

Im Buch "Interbase Datenbankentwicklung mit Delphi" von A. Kosch habe folgendes gelesen:
Ein erfolgreiches BackUp schleißt ein erfolgreiches Restore NICHT mit ein.
Das trifft zum Beispiel zu, wenn man irgendwelche Sonderzeichen (auch deutsche Umlaute) in
Domains, Trigger oder Stored procedures verwendet.
Folgendes Beispiel läßt ein erfolgreiches BackUp zu. Ein Restore schlägt jedoch fehl

SQL-Code:
CREATE DOMAIN UMLAUT AS CHAR(1) DEFAUTL 'ä' NOT NULL COLLATE DE_DE

Hansa 11. Jun 2004 13:03

Re: Firebird Datenbankbackup wieder herstellen
 
Zitat:

Zitat von theomega
...Gebackupt habe ich über den Komponenten TIBBackupService (Standart von Delphi 7 Enterprise) via diesem Code:

... Eine Fehlerursache könnte sein: evtl ist TIBBackupService nicht mit Firebird 1.5 kompatible.

Mann o Mann, :mrgreen:

TIBBackupService ist IBX. Also die DB-Zugriffskomponenten von Borland. Die werden einen Teufel tun, ihre Konkurrenz zu stärken. 8) Mit FB 1.0 gabs damit schon Ärger. Mit FB 1.5 traue ich mich damit an eine DB nicht mehr dran. Ich kann nur sagen, daß es mit FIBplus als Ersatz für IBX immer funktioniert hat. Und zwar so :

Delphi-Quellcode:
procedure TfrmBackup.Button1Click(Sender: TObject);
begin
  CloseB.Enabled := False;
  StatusBox.Lines.Clear;
  with pFIBBackupService1 do begin
    ServerName := ServerE.Text;
    LoginPrompt := False;
    Params.Add('user_name='+UserE.Text);
    Params.Add('password='+PasswordE.Text);
    Active := True;
    try
      Verbose := True;
      Options := [NonTransportable, IgnoreLimbo];
      DatabaseName := DBNameE.Text;
      BackupFile.Clear;
      BackupFile.Add(BackupE.Text);
      ServiceStart;
    finally
      Active := False;
      ShowMessage ('lokale Datensicherung beendet !'#10#13'Die Daten sollten aber noch auf ein externes Medium kopiert werden!');
    end;
  end;
  CloseB.Enabled := True;
end;

theomega 11. Jun 2004 13:07

Re: Firebird Datenbankbackup wieder herstellen
 
jauh, hansa, ich gebs ja zu, dummerweise hilft mir das gerade ganz wenig, aber ich bin weiter gekommen: Das Restore läuft garnicht komplett ab, sondern liefert einen Fehler und deshalb wird man auch die halbfertige Datenbankdatei nciht lesen können., Ich habe hier mal den Log:
Code:

IBE: Starting restore. Current time: 14:09:42
gbak: opened file D:\kirche III\Output\backup 2004\38026,8952829861.bak
gbak: transportable backup -- data in XDR format
gbak:       backup file is compressed
gbak: Reducing the database page size from 4096 bytes to 1024 bytes
gbak: created database C:\restore3.gdb, page_size 1024 bytes
gbak: started transaction
gbak: restoring domain RDB$11 
gbak: restoring domain RDB$12 
gbak: restoring domain RDB$3 
gbak: restoring domain RDB$4 
gbak: restoring domain RDB$5 
gbak: restoring domain RDB$14 
gbak: restoring domain RDB$15 
gbak: restoring domain RDB$16 
gbak: restoring domain RDB$8 
gbak: restoring domain RDB$9 
gbak: restoring domain RDB$10 
gbak: restoring domain RDB$17 
gbak: restoring domain RDB$18 
gbak: restoring domain RDB$19 
gbak: restoring domain RDB$20 
gbak: restoring domain RDB$21 
gbak: restoring domain RDB$22 
gbak: restoring domain RDB$23 
gbak: restoring domain RDB$24 
gbak: restoring domain RDB$25 
gbak: restoring domain RDB$26 
gbak: restoring domain RDB$27 
gbak: restoring domain RDB$28 
gbak: restoring domain RDB$29 
gbak: restoring domain RDB$30 
gbak: restoring domain RDB$31 
gbak: restoring domain RDB$32 
gbak: restoring domain RDB$33 
gbak: restoring domain RDB$34 
gbak: restoring domain RDB$35 
gbak: restoring domain RDB$36 
gbak: restoring domain RDB$37 
gbak: restoring domain RDB$38 
gbak: restoring domain RDB$39 
gbak: restoring domain RDB$40 
gbak: restoring domain RDB$41 
gbak: restoring domain RDB$42 
gbak: restoring domain RDB$43 
gbak: restoring domain RDB$44 
gbak: restoring domain RDB$45 
gbak: restoring domain RDB$47 
gbak: restoring domain RDB$49 
gbak: restoring domain RDB$50 
gbak: restoring domain RDB$51 
gbak: restoring domain RDB$52 
gbak: restoring domain RDB$53 
gbak: restoring domain RDB$54 
gbak: restoring domain RDB$55 
gbak: restoring domain RDB$56 
gbak: restoring domain RDB$57 
gbak: restoring domain RDB$58 
gbak: restoring domain RDB$59 
gbak: restoring domain RDB$66 
gbak: restoring domain RDB$67 
gbak: restoring domain RDB$68 
gbak: restoring domain RDB$69 
gbak: restoring domain RDB$70 
gbak: restoring domain RDB$71 
gbak: restoring domain RDB$72 
gbak: restoring table VORLAGEN
gbak:    restoring column VORLAGENID
gbak:    restoring column VORLAGENTEXT
gbak:    restoring column VORLAGENTITEL
gbak: committing metadata for table VORLAGEN
gbak: error committing metadata for table VORLAGEN
gbak: restoring table SACHBUCH
gbak:    restoring column SBNR
gbak:    restoring column SBID
gbak:    restoring column SBCOMMENT
gbak: committing metadata for table SACHBUCH
gbak: error committing metadata for table SACHBUCH
gbak: restoring table GLIEDERUNG
gbak:    restoring column GLID
gbak:    restoring column SBIDT
gbak:    restoring column SBID
gbak:    restoring column GLNR
gbak:    restoring column GLCOMMENT
gbak:    restoring column GLNAME
gbak: committing metadata for table GLIEDERUNG
gbak: error committing metadata for table GLIEDERUNG
gbak: restoring table IBE$REPORTS
gbak:    restoring column IBE$REPORT_SOURCE
gbak:    restoring column IBE$REPORT_RIGHTS
gbak:    restoring column IBE$REPORT_ID
gbak:    restoring column IBE$REPORT_PARENT_ID
gbak:    restoring column IBE$REPORT_NAME
gbak:    restoring column IBE$REPORT_IS_REPORT
gbak: committing metadata for table IBE$REPORTS
gbak: error committing metadata for table IBE$REPORTS
gbak: restoring table FUNKTION
gbak:    restoring column FNID
gbak:    restoring column FNNR
gbak:    restoring column GLID
gbak:    restoring column FNCOMMENT
gbak:    restoring column FNNAME
gbak: committing metadata for table FUNKTION
gbak: error committing metadata for table FUNKTION
gbak: restoring table CONFIG
gbak:    restoring column KEYNAME
gbak:    restoring column KEYTITEL
gbak:    restoring column KEYVALUE
gbak:    restoring column KEYDESCRIPTION
gbak: committing metadata for table CONFIG
gbak: error committing metadata for table CONFIG
gbak: restoring table KONTO
gbak:    restoring column KNID
gbak:    restoring column FNID
gbak:    restoring column KONTOEINLAST
gbak:    restoring column KONTOAUSLAST
gbak:    restoring column KONTOPLANUNGLAST
gbak:    restoring column KONTOEIN
gbak:    restoring column KONTOAUS
gbak:    restoring column KONTOPLANUNG
gbak:    restoring column KNNR
gbak:    restoring column KONTOCOMMENT
gbak: committing metadata for table KONTO
gbak: error committing metadata for table KONTO
gbak: restoring table KONTONAME
gbak:    restoring column ID
gbak:    restoring column KNNR
gbak:    restoring column KNNAME
gbak: committing metadata for table KONTONAME
gbak: error committing metadata for table KONTONAME
gbak: restoring table BELEG
gbak:    restoring column BELEGID
gbak:    restoring column KNID
gbak:    restoring column BELEGDATUM
gbak:    restoring column BELEGBETRAG
gbak:    restoring column BELEGAUSGESTELLTAM
gbak:    restoring column BELEGTYP
gbak:    restoring column BELEGCHECKED
gbak:    restoring column TEXT1 
gbak:    restoring column TEXT2 
gbak:    restoring column BELEGSPENDENNUMMER
gbak:    restoring column BELEGSACHLICHERICHTIGKEIT
gbak:    restoring column BELEGRECHNERISCHERICHTIGKEIT
gbak: committing metadata for table BELEG
gbak: error committing metadata for table BELEG
gbak: restoring function ISEINAHME
gbak:    restoring argument for function ISEINAHME
gbak:    restoring argument for function ISEINAHME
gbak: restoring function EZPLAN
gbak:    restoring argument for function EZPLAN
gbak:    restoring argument for function EZPLAN
gbak: restoring generator GEN_SACHBUCH_ID value: 3 
gbak: restoring generator GEN_GLIEDERUNG_ID value: 29 
gbak: restoring generator GEN_FUNKTION_ID value: 40 
gbak: restoring generator GEN_KONTO_ID value: 123 
gbak: restoring generator GEN_KONTONAME_ID value: 395 
gbak: restoring generator GEN_BELEG_ID value: 818 
gbak: restoring generator GEN_VORLAGEN_ID value: 2 
gbak: restoring stored procedure SP_GEN_SACHBUCH_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_GLIEDERUNG_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_FUNKTION_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_KONTO_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_KONTONAME_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_BELEG_ID
gbak: restoring parameter ID for stored procedure
gbak: restoring stored procedure SP_GEN_VORLAGEN_ID
gbak: restoring parameter ID for stored procedure
gbak:    committing metadata
gbak:    restoring index RDB$PRIMARY8 
gbak:    restoring index RDB$FOREIGN21 
gbak: restoring data for table BELEG
IBE: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
connection lost to database.

IBE: Restore completed. Current time: 14:09:43. Elapsed time: 00:00:00
Die Tabelle "BELEG" ist dummerweise die aller wichtigste!

Jens Schumann 11. Jun 2004 13:10

Re: Firebird Datenbankbackup wieder herstellen
 
Moin Hansa,
Zitat:

Zitat von Hansa
...
TIBBackupService ist IBX. Also die DB-Zugriffskomponenten von Borland. Die werden einen Teufel tun, ihre Konkurrenz zu stärken. 8) Mit FB 1.0 gabs damit schon Ärger. Mit FB 1.5 traue ich mich damit an eine DB nicht mehr dran. ...

Ich verwende die IBX-Komponenten mit dem Firebird 1.5 ohne auf irgendein Problem gestoßen zu sein.

Hansa 11. Jun 2004 13:31

Re: Firebird Datenbankbackup wieder herstellen
 
Wenn ich das richtig sehe, wird in dem Log angezeigt, daß keine einzige der Tabellen comitted wird. Nicht nur die Beleg !

@Jens: wenn keine Firebird-spezifischen Dinge benutzt werden, sollte IBX schon gehen, aber Borland selber sagt, FB würde in keinster Weise unterstützt. Das galt schon für 1.0. Insofern ist höchste Vorsicht geboten ! Solche Fehlersuchen wie jetzt hier, sind nämlich nicht unbedingt notwendig. Wenn TheOmega jetzt bei Borland anruft, dann fragen die nach Delphi Version und DB-Version. Sagt er da "Firebird" so sind die schnell fertig. :shock:

Aber was ist jetzt mit dem Borland Interbase überhaupt ?

Jens Schumann 11. Jun 2004 13:35

Re: Firebird Datenbankbackup wieder herstellen
 
Zitat:

Zitat von Hansa
...Solche Fehlersuchen wie jetzt hier, sind nämlich nicht unbedingt notwendig. ...

Aber was ist jetzt mit dem Borland Interbase überhaupt ?

Ich glaube nicht das der Fehler wegen IBX und Firebird inkompatibilitäten auftritt.

hat Borland nicht vor kutzem eine neue version IB 7.1 herausgebracht ?!?

theomega 11. Jun 2004 13:35

Re: Firebird Datenbankbackup wieder herstellen
 
also: ich habe es aus irgende ineem Grund mit einem einen Tag älteren Backup (das mit theoretisch auch reichen würde) probiert und bekomme zumindest alle Datenbank inkl. der Belege wiederhergestellt, dummerweise lang nicht alle Zeilen, ich fehlen sicher die Hälfte wenn nicht mehr. Bei noch älteren Backups habe ich mehr Eträge drin als bei den neueren, was sich auch in der Dateigröße zeigt, vermutlich ist da irgendwas beim Backup schiefgelaufen! Kacke! Und es scheint keine Rolle zu spielen ob ich jetzt IB oder FB nehme!

Jens Schumann 11. Jun 2004 13:38

Re: Firebird Datenbankbackup wieder herstellen
 
Hallo theomega,
hasst Du irgendwo Sonderzeichen verwendet? Siehe mein erstes Posting

theomega 11. Jun 2004 13:43

Re: Firebird Datenbankbackup wieder herstellen
 
in den Feldinhalten ganz sicher, in den Feldnamen sicher nicht, darauf habe ich geachtet!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.

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