Mailinglisten-Archive |
"wbh_(at)_euta.net" <wbh_(at)_euta.net> schrieb am 17.09.02 10:24:34:
> >Ich habe das Problem, dass sich der Server mit der oben genannten
> Fehlermeldung aufhängt(nach mehreren Tausend erfolgreichen >Inserts) , wenn
> eine Funktion, die prüft ob ein Datensatz schon da ist, ständig in einer
> Importschleife
> >aufgerufen wird.
>
> >Der Fehler tritt nur mit einem schnellen Rechner auf(P4 1700).
> >Mit einem P3 500 nicht.
>
> >Betriebsystem: Windows98
> >ODBC Treiber Version 2.51
> [...]
> >Hat jemand eine Idee oder vielleicht ein ähnliches Problem schon mal
> gehabt.
> >Vieleicht ist auch was grundsätzlich falsch.
>
> Hi Rene ,
>
> Wie der Fehler schon sagt öffnest du zu viel Verbindungen. Ohne deine
> boolsche Funktion jetzt analysieren zu wollen ist die Sache die, dass der
> schnelle Rechner einfach zu viele ODBC - Verbindungen gleichzeitig öffnet.
>
> Abhilfe:
>
> 1. ODBC - Verbindung permanent öffnen (pconnect o.ä.).
>
> 2. Wird mit deinem close - Befehl denn wirklich die Verbindung geschlossen
> und der Prozess beendet?
>
> 3. Den Befehl hArtikelSet.Open(CArtikelSet::snapshot,SuchBuffer,CArtikel
> Set::readOnly ); nicht in dieser function aufrufen, sondern bei der
> Intitialisierung einmal öffnen. Zwar werd ich aus deinem Code jetzt net
> ganz schlau, aber ich vermute du öffnest für jeden Datensatz eine eigene
> ODBC - Verbindung.
>
> 4. Direkte Verbindung verwenden (mysql.dll). Gibts für einige
> Programmiersprachen sogar als Quellcode und kann ohne dll eingebunden,
> sprich kompiliert werden (Betriebssystemübergreifend).
>
> 5. Schau doch mal mit einem Prozessüberwachungstool bzw. Resourceneditor
> nach was dein Code mit deiner Maschine macht. Es kann nähmlich auch sein,
> dass die Verbindung zwar geschlossen, die Resourcen aber nicht freigegeben
> werden (Beispiel: MS - Word mit formatiertem Serienfax).
>
> MFG Wolfgang
>
> Hallo Wolfgang
Es hat tatsächlich am Öffenen und Schliessen des Datensatzes gelegen. Eigentlich sollten die Resourcen mit
pSet->Close()
und anschliessendem
delete pSet
wieder freigegeben werden. Ist aber offensichtlich doch nicht der Fall.
Wenn die Verbindung offen bleibt(delete pSet erst nach Einlesen aller Records) , tritt der Fehler nicht mehr auf.
Vielen Dank für deine Hilfe
Gruss Rene
>
> ---
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->> http://www.4t2.com/mysql
>
______________________________________________________________________________
Nur noch ein E-Mail-Postfach, aber alle alten Adressen behalten? Kein Problem!
WEB.DE FreeMail als Kommunikationszentrale: http://freemail.web.de/?mc=021125
---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive