Hallo Frank,
seit längerem beschäftigt mich folgende Frage, was passiert mit einem Objekt, z.b. ADODB.Recordset, wenn ich es innerhalb einer Prozedur oder Funktion nicht mit set object = nothing explizit "töte"? Beispiel:
laut MS werden Objekte mit nach Abarbeitung des Skripts (nicht
der Sub, Function, ...) autom. terminiert. Allerdings zeigt die
Erfahrung, dass dem nicht so ist.
Die einhellige Meinung derer, dies wirklich mal ausprobiert
haben, ist, dass _jedes_ Objekt explizit terminiert werden
sollte. Stellenweise bedeutet dass zwar einigen Aufwand (meist,
wenns nachträglich gemacht werden muss ;), aber wenn man
von vorneherein eine saubere Struktur drinhat, gehts relativ
problemlos.
Gerade bei ADO besteht z.B. das Problem mit dem Connection-Pooling.
Dies sorgt dafür, dass frei gewordene Verbindungen wiederverwendet
werden können. Wenn die Connections aber nicht explizit zerstört
werden, dauert es seine Zeit, bis IIS das macht (wenn er irgendwann
mal Zeit dazu hat, was auf einem richtigen Webserver wohl eher
nicht der Fall sein wird). Die Connections werden dann gecacht,
aber nicht mehr wiederverwendet, da der Status immer noch "In
Benutzung" ist.
HTH,
Stefan