claude
Goto Top

Access97, Datenbank Absturz während der Berechnung

Eine 8 Jahre alte Datenbank funktioniert plötzlich nicht mehr richtig!

Hallo,

Diese Schnittstellendatenbank stellt Daten aus einem ERP-System an weitere Access97 Datenbanken bei. Die Datenbank existiert bereits seit 8 Jahre, und die Berechnung wird jede Nacht ausgeführt.
Seit einer Woche stürtz die Datenbank mitten in der Berechnung ab, ohne Fehlermeldung (alle Funktionen sind aber mit Fehlerroutinen versehen)
Die Berechnung ist in 6 Makros unterteilt.
Der Absturz passiert in Makro 2 (nachdem Makro 1 ausgeführt wurde)
Wenn jedoch Makro 2 separat gestartet wird, lauft es durch!

Daher vermute ich nun, das der belegte Speicher eine bestimmte Grenze nicht erreicht darf (sichtbar unter dem Prozess MSACCESS.EXE im Task-Manager von Windows).
Beim Absturz ist die Speicherbelegung für MSACCESS.EXE ca 31.500 KB.
Gibt es hier eine Grenze????

Die Datenbank wurde auch in den letzten Wochen nicht geändert. Die Datenmenge ist jedoch angewachsen. Daher auch einige Feld-Variablen, die automatisch mit REDIM erhöht werden, wenn die Anzahl der Datensätze höher wird. Daher auch höhere Speicherbelegung.

Hat jemand schon ähnliche Erfahrungen gemacht?
Was gibt es für möglichkeiten, die Speicherbelegung in Grenzen zu halten.
-- habe bereits bei allen Function alle Tabellen und Datenbankvariablen mit NOTHING beendet
-- bringt es was, Feldvariablen (ZB MeinFeld(100)) am Ende der Funktion mit REDIM MeinFeld(1) zu überschreiben? Oder hift hier auch ein SET NOTHING?


Danke für Feedback.

mfG
Claude

PS habe nachträglich den Bereich geändert, da es doch eher ein Windows (Server) Problem ist.

Nachtrag 27.12.2007: Da es hier kein Feedback mehr gibt (Schade...), wird der Beitrag geschlossen.

Content-Key: 69322

Url: https://administrator.de/contentid/69322

Printed on: April 25, 2024 at 12:04 o'clock

Member: Claude
Claude Sep 24, 2007 at 10:54:28 (UTC)
Goto Top
Noch ein paar Infos dazu:
Normalerweise läuft die Datenbank auf einem Server (Windows 2000). Ist bei diesem Betriebssystem die Grenze 32MB oder 64MB pro Prozess?
... wird haben die Datenbank nur vom Server auf mein Rechner verlagert, um die Probleme zu analysieren. Vielleicht habe ich das Problem bereits gelöst, und ich weiss es gar nicht, da auf dem Rechner die Grenze bei 32MB pro Prozess liegt ..... nur eine Vermutung....
Member: Claude
Claude Sep 30, 2007 at 22:51:46 (UTC)
Goto Top
Hallo,
Die Datenbank läuft auf dem Server wieder problemlos. Auf meinem Rechner mit XP jedoch nicht. Ist zwar nicht mehr schlimm, möchte aber herausfinden warum.
Deshalb nochmal die Frage: Gibt es tatsächlich eine Grenze für die Windows-Prozesse?
Vielen Dank für Infos.
mfG
Claude
Member: Biber
Biber Oct 01, 2007 at 01:57:16 (UTC)
Goto Top
Moin Claude,

auch wenn Du Dir schon viel Mühe gegeben hast, den Fehler zu beschreiben und einzugrenzen, ein paar Details sind mir noch nicht klar (genug) geworden:

  • in Makro1 (der durchläuft) und Makro2 (der vermutlich auf eine Speicheradresse springt, die hinterm Nirwana gleich rechts liegt) -- dort wird "nur" berechnet oder auch schon aus verschiedenen *-mdb-Quellen gelesen?
  • wenn mehrere *.mdbs beteiligt: sind alle mal formal "gewartet" worden (Reorganisiert/Repariert)?
  • auf die Makros selbst, den Sourcecode hast Du offensichtlich uneingeschränkten Zugriff - kannst Du die ganze Klamotte auf Access 2000 (oder höher) migrieren? Denn für Access 97 findest Du doch wirklich nur noch Hilfe in solchen Foren wie hier... wenn es an Access97-Alt-Bugs liegt steckst Du unnötig Zeit rein.
  • sind weitere Clients beteiligt/können unterschiedliche Jet-Engine-Stände die Fehlerquelle sein? Oder unterschiedliche Bibliotheksverweise aus VBA heraus?? Fehlt auf dem Server eine Referenz - wird die falsche Lib referenziert?

Grüße
Biber
Member: Claude
Claude Oct 02, 2007 at 16:11:28 (UTC)
Goto Top
Hallo, zuerst Danke für die Antwort.

Im ersten Makro werden hauptsätzlich 'lokal-Kopien' von Tabellen aus unserem ERP-System per ODBC erzeugt, aber auch bereits berechnet.
In den weiteren Makros wird berechnet, und Tabellen aus anderen DBs aktualisiert.

Die Datenbanken werden alle automatisch komprimiert, jede Nacht. Die Kompilierung wird regelmäßig geprüft und durchgeführt. Die Benutzer greifen auf die DBs per Runtime, daher werden diese auch nicht decompiliert. (Nur von mir, beim Entwickeln)

Ich habe selbst vollen Zugriff auf alle Datenbanken und Bibliotheken. Die Verweise sind gleich.

Möglichkeit wäre natürlich, ein unterschiedlicher Stand der Jet-Engine bzw. MDAC. Werde ich prüfen.

Eine Migration nach Access2003 ist in Planung (müsste aber alle ca 15 Datenbanken konvertieren)

Fakt ist: Der Berechnungslauf funktioniert auf dem Server (Windows 2000 Server) wieder perfekt.
Bei mir (Windows XP Pro) jedoch nur in einzelne Schritte.

Mich würde definitiv interessieren, ob es wirklich für einzelne Prozesse (hier MSACCESS.EXE) eine Speichergrenze gibt, und ob die bei 2000 und XP, und jeweils bei Einzelplatz- oder Serverversion unterschiedlich ist.

mfG
claude