Announcement

Collapse
No announcement yet.

Datenbank auf Fehler prüfen

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

  • Datenbank auf Fehler prüfen

    Hallo,

    ich verwende Interbase 5.6 auf einem WinNt 4.0 System. Meine Frage, gibt es irgentwie die Möglichkeit, eine Datenbank auf Fehler zu prüfen, aus einer Delphi 4.0 Anwendung?
    Wie es z. B. im Server Manager von Interbase möglich ist. Menüpunkt: Maintencace - Database Validation.

    Hab schon in der Dokumentation und im Internet vergeblich gesucht.

    Bin um jeden Tipp dankbar.

    MfG

    Michael M.

  • #2
    Hallo,

    im Fall der IBX-Komponenten ist für diese Aufgabe <b>TIBValidationService</b> zuständig. Ab Delphi 6 stellt Borland dafür (alle Admin-Aufgaben für den InterBase) im Verzeichnis <i>C:\Programme\Borland\Delphi6\Demos\Db\IBX\Admin </i> auch ein umfangreiches Beispiel zur Verfügung. Dieses Beispiel ist aber sicherlich auch über CodeCentral erreichbar

    Comment


    • #3
      Hallo Andreas,<p>
      die 5.6 hatte aber doch noch gar keine Services ?<p>
      Heik

      Comment


      • #4
        Hallo Heiko,

        korrekt!

        Torste

        Comment


        • #5
          Hallo,

          leider bringen mich die IBX Komponenten nicht weiter, da sie nur ab Delphi 5.0 zur Verfügung stehen und Interbase 5.6 die Services nicht unterstüzt.

          Gibt es irgentwie eine andere Möglichkeit, bei Interbase 5.6 mit Delphi 4.0 festzustellen ob eine Datenbank gülitg ist oder nicht?

          MfG

          Michael M

          Comment


          • #6
            Hallo Michael,

            unabhängig von Delphi 4 hast Du bei Verwendung von IB 5.6 nur die Möglichkeit die Komandozeilentools von IB zu verwenden.

            Diese kann man auch aus einem Delphiprogramm herhaus ausrufen. Die Auswertung des Rückgabeergebnis muß dann aber in Eigenregie erfolgen.

            Gruß

            Torste

            Comment


            • #7
              Hallo Torsten,

              danke für die Antwort, ich habe ein bisschen mit gfix rumgespielt und festgestellt, dass gfix keinen Exitcode zurück und die Ausgabe kann auch nicht in eine Datei umgeleitet werden. ( gfix ... > ausgabe.txt) :-(

              Gibts noch ein anderes Programm?

              Der Vorgang sollte schon so automatisiert werden das keine Benutzer reatktion statt finden muss, weil dort kein Bediener vor dem Pc sitzt.

              MfG

              Michael M

              Comment


              • #8
                Hallo Michael,
                <br><br>
                mit InterBase 5.6, ist aufgrund der fehlenden Services API, gfix.exe die einzige Möglichkeit. Such im kompletten Entwickler Forum mal nach <b>output umleiten</b>. Du könntest hiermit versuchen, den von gfix.exe erzeugten Output, in eine TMemo Instanz zu laden.
                <br><br>
                HTH,
                <br>
                Thoma
                Thomas Steinmaurer

                Firebird Foundation Committee Member
                Upscene Productions - Database Tools for Developers
                Mein Blog

                Comment


                • #9
                  Hallo Michael,
                  <br><br>
                  das wäre auch noch ein Versuch wert. http://community.borland.com/article/0,1410,25605,00.html
                  <br><br>
                  Thoma
                  Thomas Steinmaurer

                  Firebird Foundation Committee Member
                  Upscene Productions - Database Tools for Developers
                  Mein Blog

                  Comment


                  • #10
                    Hallo,

                    danke Thomas für den Link, der hat mir sehr weiter geholfen.

                    Ich habe auch noch eine weitere Möglichkeit gefunden, die auf der API-Funktion isc_attach_database basiert. Wenn man hier bei den sog. Datenbank Parameter Block isc_dpb_verify mitgibt wird die Datenbank beim öffnen auf Gültigkeit überprüft.

                    Nochmals Danke, für alle Ideen und Antworten.

                    MfG

                    Michael M

                    Comment


                    • #11
                      Hallo,
                      danke Thomas für den Link, der hat mir sehr weiter geholfen.

                      Ich habe auch noch eine weitere Möglichkeit gefunden, die auf der API-Funktion isc_attach_database basiert. Wenn man hier bei den sog. Datenbank Parameter Block isc_dpb_verify mitgibt wird die Datenbank beim öffnen auf Gültigkeit überprüft.

                      Beim ausführen von gfix und der obengenannten API ist es Bedingung, dass keine Verbindung zur der Datenbank bestehen darf. Gibt es noch ne Möglichkeit ohne Disconnect durchzuführen.

                      Bei dem System greifen mehreren Programmen auf die Datenbank zu, die auch nicht so ohne weiteres disconnectet werden dürfen.

                      MfG

                      Michael M

                      Comment


                      • #12
                        Hallo Michael,
                        <br><br>
                        um eine Datenbank validieren zu können, benötigst Du exklusiven Zugriff.
                        <br><br>
                        Schöne Grüße,
                        <br>
                        Thoma
                        Thomas Steinmaurer

                        Firebird Foundation Committee Member
                        Upscene Productions - Database Tools for Developers
                        Mein Blog

                        Comment


                        • #13
                          Hallo Thomas,

                          Kann man nicht noch irgentwie die Gültigkeit über SQL, System Tabellen oder ähnliches Prüfen?

                          Es sitzt kein Bediener vor dem Pc, das System, welches aus mehreren Verteilten-Anwendungen besteht, muss selbständig weiter arbeiten, ohne grosse Verzögerungen.

                          MfG

                          Michael M

                          Comment


                          • #14
                            Hallo Michael,

                            eine Alternative wäre noch ein Backup und Restore . Für das Backup (gbak) ist kein exclusiver Zugriff auf die DB notwendig. Wenn das Restore erfolgreich ist, dann ist die DB auch i.O.. Das Restore erfolgt in eine temporäre Datenbank. Nach dem Restore kann die temporäre DB dann wieder entsorgt werden.

                            Gruß

                            Torste

                            Comment

                            Working...
                            X