Announcement

Collapse
No announcement yet.

IB 6 auf XP --- Problem beim gleichzeitigen Zugriff

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

  • IB 6 auf XP --- Problem beim gleichzeitigen Zugriff

    Hallo,

    ich habe beim Kunden folgendes Problem:

    Es kann immer nur ein Programm auf IB - Datenbank zugreifen. Der Effekt davon ist: ein Programm läuft, das andere "läuft" in einer Warteschleife. Wird das erste Programm beendet, startet das zweite.

    Umgebung:
    Server: Windows XP (der Kunde wollte es so!)
    Clients: Win XP Prof
    IB: Interbase Server 6, Open Source
    Programme: Delphi 6 Enterprise, Zugriff auf IB mittels IBQuery (?)

    Wir haben das gleiche aber auch in einer Win2k - Umgebung, liegt also
    wohl nicht an der BS - Umgebung.

    Ein weiteres Problem, das wir haben, ist der Start der Programme und
    der Connect (ibquery) zur Datenbank. Dieser Connect dauert bis zu 10
    Sekunden.

    Testet man das Programm mit einer lokalen Datenbank, ist es quasi sofort
    da .......

    Könnte Ihr mir vielleicht helfen? Ich bin nun leider kein ausgewiesener
    IB - Experte und ihr würdet mir wirklich aus der Patsche helfen.

    Vielen Dank

    Peter Thorn

  • #2
    Hallo,

    Borland stellt auf seiner Community-Webseite u.a. ein InterBase-FAQ bereit, darunter auch <b>Article #28142: InterBase 6.5 on Windows XP</b> (http://community.borland.com/downloads/ti-faq/ib-faq.zip). Dort sind Hinweise für die Ursache und für ein Workaround für diese speziellen XP-Probleme zu finden.

    Was bedeutet "das andere "läuft" in einer Warteschleife"? Wie sieht so etwas in der Anwendung aus? Nutzt die Anwendung etwa eine sehr lange explizit aufgerufene Transaktion, so dass jede danach gestartete Anwendung auf das Transaktionsende (und somit auf den Wegfall der Datensatzsperre) warten muss? Im FORUM-Bereich <i>Delphi | IBX</i> sind viele Hinweise über die Transaktionssteuerung mit IBX zu finden

    Comment


    • #3
      Hallo Herr Kosch,

      vielen Dank für die schnelle Antwort.
      "Laufen" meint:

      Auf einem Client wird Programm A gestartet, connected sich
      an die Datenbank, mit dem Programm kann gearbeitet werden.

      Auf einem anderen Rechner wird Programm B gestartet, connected
      sich an die gleiche Datenbank. Es kann nicht mit dem Programm
      gearbeitet werden, da der Connect nicht durchgeführt wird.
      Das Programm "hängt" (es sieht zumindest so aus). Nach Beenden von Programm A wird Programm B dann ausgeführt.

      Gruss

      Peter Thor

      Comment


      • #4
        Hallo,

        wann wird die anzuzeigende Datenmenge in der gestarteten Anwendung geöffnet? Wenn dies gleich beim Start passiert, würde ich die beiden Aufgaben (Datenbankverbindung über TIBDataBase herstellen und Datenmenge über TIBDataSet/TIBQuery abfordern) zum Test trennen (ShowMessage-Aufruf dazwischen einbauen). Bei welchem dieser beiden Schritte bleibt das Programm hängen? Was passiert, wenn zum Test die folgende Konfiguration verwendet wird?
        <pre>
        object IBDatabase1: TIBDatabase
        DatabaseName = 'P4W2K:C:\Database\IB6\NEU6D3.GDB'
        Params.Strings = (
        'user_name=SYSDBA'
        'password=masterkey'
        'lc_ctype=ISO8859_1')
        LoginPrompt = False
        DefaultTransaction = IBTransaction1
        IdleTimer = 0
        SQLDialect = 3
        TraceFlags = []
        Left = 24
        Top = 8
        end
        object IBTransaction1: TIBTransaction
        Active = False
        DefaultDatabase = IBDatabase1
        Params.Strings = (
        'concurrency'
        'nowait')
        AutoStopAction = saNone
        Left = 24
        Top = 40
        end
        </pre&gt

        Comment


        • #5
          Ok, das Problem konnte gefixt werden.
          Ursache war beim DB - Connect ein exclusiver Zugriff des jeweiligen
          Programms, was zur Folge hatte, dass das andere Programm nicht
          mehr zugreifen konnte

          Comment

          Working...
          X