Announcement

Collapse
No announcement yet.

Generator

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Generator

    Hallo Andreas, Hallo @ all,

    in Deinem Buch "InterBase-Datenbankentwicklung mit Delphi", Kapitel 5.5 GENERATOR, auf Seite 198 schreibst Du im letzten Absatz der Seite "Suchen Sie keine Funktion zum Löschen eines Generators - es gibt sie nicht. Da ein Generator nur 4 Byte in der Datenbank belegt, ist das Entfernen nicht vorgesehen. Sie können nur den Eintrag aus den Systemtabellen entfernen und so dafür sorgen, das der Generator unsichtbar wird."

    Wenn ich nun einen überflüssigen Generator mit dem folgenden Befehl aus der Systemtabellen entferne, habe ich spätestens beim Restore ein Problem.

    DELETE FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME = 'META$GEN1'^

    Backup geht.

    Beim Restore knallts mit folgender Fehlermeldung...

    gbak: creating indexes
    gbak: ERROR: invalid request BLR at offset 165
    gbak: ERROR: generator META$GEN1 is not defined
    gbak: Exiting before completion due to errors

    Habe ich was übersehen? Ich dachte, ich könnte den Eintrag aus den Systemtabellen entfernen. Habe ich Deine Ausführungen flasch verstanden? Bin momentan etwas ratlos...

    Mit freundlichen Grüßen

    Jürgen

    PS. Dein Buch ist klasse

  • #2
    Hallo,

    >Habe ich was übersehen?

    Ich würde das Risiko nicht eingehen, nur um eine kosmetische Verbesserung bei der Anzeige der Generatoren zu erreichen.

    Von Jim Starkey stammt dazu die folgende Aussage: "<i>The statement DELETE FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME = <name>
    removes the reference to the generator from the visible
    system tables, but does not remove the physical structure that supports the generator. It has the "advantage" of allowing you to create a new generator with the old name, and should clean up the DB Explorer garbage.</i>"

    &gt;ERROR: generator META$GEN1 is not defined gbak

    Das deutet darauf hin, dass irgendwo im Datenbankschema noch eine Version einer Stored Procedure/Trigger rumliegt, die einen Bezug zu diesem Generator hat. Vor dem Löschen des Generators sollte man zur Sicherzeit die Datenbank über einen Backup-/Restore-Zyklus vollständig neu aufbauen, damit die alten "Leichen" verschwinden. Erst danach könnte man die Operation am "offenen Herzen" (RDB$GENERATORS) probieren

    Comment


    • #3
      Hallo Andreas,

      Danke für die schnelle Antwort.

      >Das deutet darauf hin, dass irgendwo im Datenbankschema noch eine Version einer Stored Procedure/Trigger rumliegt, die einen Bezug zu diesem Generator hat.

      >Vor dem Löschen des Generators sollte man zur Sicherzeit die Datenbank über einen Backup-/Restore-Zyklus vollständig neu aufbauen, damit die alten "Leichen" verschwinden.

      Jupp, habe ich natürlich gemacht. Die Datenbank war frisch restored. Dann habe ich den Generator gelöscht. Werde mal Dedektiv spielen und suchen, wer diesen Generator benutzt.

      und tschüss

      Jürge

      Comment

      Working...
      X