Announcement

Collapse
No announcement yet.

BDE Fehler $2B32 Share violation

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

  • BDE Fehler $2B32 Share violation

    Ich habe mein Web auf einen W2k-server portiert. Jetzt ist der gleichzeitige Ablauf von CGI-Skripen gestört. Es kommt Fehlermeldung $2B32, Share violation.

    Unter NT 4 lief alles ok.

    Was könnte ich tun?

  • #2
    Hallo,

    was passiert, wenn in der BDE-Verwaltung die Einstellung SHAREDMEMLOCATION auf den Wert <b>5BDE</b> gesetzt wird? Sind irgendo auf diesem Rechner noch ISAPI-DLLs im Spiel, die ebenfalls auf die BDE zugreifen?

    P.S: Borland hat die BDE zum "alten Eisen" gelegt, mit jeder neuen Windows-Version werden die Probleme mit hoher Wahrscheinlichkeit zunehmen (da MS die alten Kompatibilitäts-Teile Schritt für Schritt aus dem Betriebssystem entfernt). Es ist eine gute Idee, sich frühzeitig nach Ersatz umzusehen

    Comment


    • #3
      Es ist so, daß ich (im Test) 1 CGI-Programm über den MSIIS starte, das die BDE benutzt.
      Wenn jetzt das nächste MSIIS/CGI-Programm gestartet wird, steigt es beim ersten Versuch, auf (in diesem Fall eine MSAccess-) Datenbank zuzugreifen, aus und meldet den BDE-Fehler.
      Welche Alternative würden Sie vorschlagen?

      Mit dem Parameter für SHAREDMEMLOCATION werde ich jetzt mal testen ..

      Danke & Grüße
      Reinhold Staubac

      Comment


      • #4
        Ich habe den Parameter SHARE... gesetzt. Hilft aber nicht.
        Ich habe auch im "blockierenden" Programm, das auf 2 DBs zugreift, die 1. DB, die vom folgenden Programm benutzt werden soll, explizit geschlossen mit TDatabase.Free
        Hilft auch nichts. Der erste Prozeß blockiert, solange er läuft, ca. 5 Minuten, den restlichen CGI-Betrieb.
        Schlimm, oder

        Comment


        • #5
          Hallo,

          &gt;Wenn jetzt das nächste MSIIS/CGI-Programm gestartet...

          ist das wirklich eine CGI-EXE? Wenn ja, ist das eine für den IIS sehr ungewöhnliche Konfiguration.

          Was passiert, wenn die Checkbox <b>ISAPI-Anwendungen zwischenspeichern</b> auf der Registerseite <i>Anwendungskonfiguration</i> (erreichbar über Internet-Informationsdienste | Webseite | Eigenschaften | Basisverzeichnis | Konfiguration) für das virtuelle Webverzeichnis der CGI/ISAPI <b>abgewählt</b> wird

          Comment


          • #6
            Zum ersten Teil der Antwort:

            Warum sollte das ungewöhnlich sein?
            Es können bis zu 10 CGI-Programme gleichzeitig laufen. Und tun es auch. Das heißt, es können maximal 10 Benutzer gleichzeitig arbeiten. In der Praxis kommt das selten vor.
            Wenn aber jetzt eine Liste gezogen wird, und das dauert bis zu 6 Minuten, dann sind alle anderen Zugriffe anderer Benutzer nicht möglich!

            Unter NT 4 ist das kein Problem gewesen.

            Den 2. Teil der Antwort kann ich erst morgen testen. Bin in Urlaub heute ...

            Danke derweil!
            Reinhold Staubac

            Comment


            • #7
              Herr Kosch,
              ISAPI-Anwendung zwischenspeichern i s t aktiviert!

              Ich habe heute den ganzen Server nochmal neu aufgebaut.
              Bedauerlicherweise ändert sich an dem Zustand nichts.

              Es läuft jeweils nur 1 CGI-Skript zur gleichen Zeit.

              Ich befürchte, daß ich auf NT 4 zurückgehen muß.
              Oder hätten Sie noch eine Idee, was ich tun könnte?
              Grüße
              Staubac

              Comment


              • #8
                Herr Kosch,
                ich bin immer noch auf der Suche nach einer Lösung.
                Wüßten Sie eine W2k-Installation, wo CGI-Skripte (mit BDE) auf einem MS IIS problemlos laufen?
                Grüße
                Staubac

                Comment


                • #9
                  Hallo,

                  die CGI-EXE ist in der Linux-Welt üblich, aber nicht unter Win32. Für Win32 ist das Erzeugen eines neuen Prozesses für die EXE viel aufwendiger als das Abspalten eines neuen Threads in einem bereits bestehenden Prozess. Daher greift man beim IIS üblicherweise zur ISAPI-DLL bzw. zur abgewandelten Form ASP (Active Server Page).

                  In Ihrem Fall kommen gleich mehrere Faktoren zusammen: <br>
                  1. CGI-EXE anstelle ISAPI-DLL <br>
                  2. BDE wird verwendet <br>
                  3. BDE greift auf eine ACCESS-Datenbank zu <br>
                  4. BDE-Link (IDDA3532.DLL) für ACCESS greift auf ein COM-Objekt (DAO) zu

                  Um nun zu prüfen, welche Stelle dieser Aufrufkette der Übeltäter ist, würde ich zuerst die ACCESS-Datenbank zum Test gegen eine Paradox-Datenbank austauschen. Wenn Paradox geht, aber ACCESS nicht, ist der DOA-Zugriff (keine Multiuser-Umgebung?) das Problem. Wenn Paradox auch nicht geht, müssen in der CGI alle Datenbankkomponenten erst dynamisch zur Laufzeit erzeugt werden (kein Datenmodul).

                  P.S: Wenn schon ACCESS als Datenbank genutzt wird, ist es besser, die Anwendung gleich auf ADO umzustellen (sowohl Borland als auch Microsoft haben die BDE und DAO zum alten Eisen gelegt)

                  Comment

                  Working...
                  X