Fehlerhafte Zeichenfolgenfehler während der Wiederherstellung
Während eines Wiederherstellungsvorgangs, höchstwahrscheinlich beim Wiederherstellen einer Sicherung, die mit einer älteren gbak
-Version erstellt wurde, können in der Ausgabe von gbak
Fehlermeldungen angezeigt werden, die auf fehlerhafte Unicode-Zeichenfolgen hinweisen.Der Grund, warum diese auftreten können, ist wie von Helen Borrie erklärt:
Der Quelltext gespeicherter Prozeduren (und verschiedener anderer Objekttypen, z. B. CHECK-Einschränkungen) wird ebenso wie der "kompilierte" BLR-Code in einem Blob gespeichert.Wenn Sie eine Datenbank wiederherstellen, wird das BLR nicht neu erstellt: Das gleiche BLR wird verwendet, bis Sie das Objekt das nächste Mal neu erstellen oder ändern.
In der Vergangenheit hat die Engine in Bezug auf die Transliteration von in die Quelle und das BLR eingebetteten Zeichenfolgen nicht das Richtige getan.Wie Sie wahrscheinlich wissen, wurde in Version 2.1 und 2.5 viel Arbeit geleistet, um die internationalen Sprachprobleme anzugehen.Ein Nebeneffekt davon war, dass alles, was aus Daten und Metadaten gelesen wurde, einer Überprüfung der "Wohlgeformtheit" unterzogen wurde.Daher werfen diese zuvor gespeicherten Quell- und BLR-Objekte beim Wiederherstellen "fehlerhafte Zeichenfolgen" -Fehler aus, wenn gbak versucht, die Daten in diesen Systemtabellendatensätzen zu lesen und zu schreiben.Dieser sehr alte Fehler betrifft auch Benutzer-Blobs, wenn sie mit dem Zeichensatz NONE gespeichert wurden und der Client so konfiguriert ist, dass er einen bestimmten Zeichensatz liest, in den die gespeicherten Daten nicht transliteriert werden konnten.
In Version 2.1 gab es Skripte in ../misc, die Sie ausführen konnten, um die Metadaten-Blobs zu reparieren und als Vorlage für die Reparatur ähnlicher Fehler in Blobs in Ihren Benutzerdaten zu verwenden.Die Reparaturschalter wurden dem gbak-Wiederherstellungscode in Version 2.5 hinzugefügt, um die gleichen Korrekturen an Metadaten bzw. Daten während des Wiederherstellungsvorgangs einer Datenbank für das Upgrade vorzunehmen.