2016-06-17 34 views
0
wiederherstellen

Ich versuche Datenbank auf Firebird 2.5.5 wiederherzustellen, die in Firebird 2.5.1Fehler beim Parsen Verfahren bei Firebird-Datenbank

zurück nach oben war
gbak -c -p 4096 -user SYSDBA -password "pass" -v /var/lib/firebird/data/db_data_201606150100.gbk /var/lib/firebird/data/db_data.gdb 

ich die nächste Nachricht während der Wiederherstellung erhalten:

gbak: activating and creating deferred index RDB$FOREIGN97 
gbak: activating and creating deferred index RDB$FOREIGN450 
gbak: committing metadata 
gbak: ERROR:Error while parsing procedure P_IMPORTTRANS's BLR 
gbak: ERROR: function F_DOCNUM is not defined 
gbak: ERROR: module name or entrypoint could not be found 
gbak:Exiting before completion due to errors 

ich sehe keine Verfahren und Blick nach DB auf Firebird 2.5.5 verbinden. Es scheint, dass db nicht korrekt wiederhergestellt wurde.

Wie behebt man diesen Fehler?

Antwort

0

Dieser Fehler wird durch die Verwendung einer benutzerdefinierten Funktion (UDF) in der gespeicherten Prozedur verursacht, auf die die Bibliothek nicht zugreifen kann (entweder weil sie nicht vorhanden ist, falsche Bitzahl oder Betriebssystemprivilegien oder Firebird) Konfiguration den Zugriff verbieten).

Wenn die UDF definiert ist, darf die Bibliothek nicht zugänglich sein. Wenn jedoch eine gespeicherte Prozedur erstellt wird, die auf diese UDF verweist, muss sie vorhanden sein.

Mit anderen Worten, Sie müssen herausfinden, welche UDF-Bibliothek Sie in Ihrer Firebird 2.5.1-Installation verwenden und diese auch auf Ihrem Firebird 2.5.5-Server installieren.

UDF-Bibliotheken werden in der Regel in den udf Ordnern der Firebird-Installation setzen, aber Firebird kann sie so konfiguriert werden, an anderer Stelle zu suchen (firebird.confUdfAccess Einstellung). Andernfalls müssen Sie die gespeicherte Prozedur löschen oder ändern, um den Verweis auf die UDF zu entfernen und eine neue Sicherung und Wiederherstellung zu versuchen. Es gibt - soweit ich weiß - keine Möglichkeit, diesen Fehler beim Wiederherstellen zu überspringen (z. B. indem die gespeicherte Prozedur nicht erstellt wird).