Hallo Ulrich,
Ulrich Möller wrote:
> das eine Anwendung Speicher benötigt, ist klar. Das ich als
> VBA-Entwickler aber unmittelbar darauf Einfluss nehmen könnte, ob vom
> Betriebssystem virtueller Speicher oder gar realer Speicher von Access
> angefordert wird, halte ich für ein Gerücht. Ich muß mich darauf
> verlassen, daß das vom Betriebssystem und von Access schon richtig
> gehandhabt wird. Ich kann als Entwickler lediglich generell darauf
> achten, ob meine Anwendung effizient/effektiv gestaltet ist oder
> nicht. Aber das trifft wohl auf alle Anwendungen und Windows
> Versionen zu.
stimmt
> Das Access mit dem Speicher lausiger umgeht als andere vergleichbare
> Anwendungsumgebungen, halte ich schlichtweg für ein Gerücht, eher im
> Gegenteil - meine Erfahrungen sind hier eher positiver Art.
Kann und will ich nicht beurteilen. Access gehört aber zu den mächtigeren
Anwendungen und braucht schon von daher mehr Speicher, da ja auch eine
Datenbank durchaus größer wird als ein Word Dokument oder eine
Excel-Tabelle.
> Die Anwendung von André basiert auf Access 2003 und Windows XP. Mal
> abgesehen davon, inwieweit Access 2003RT noch unter Windows 8 zum
> laufen zu bekommen beziehungsweise sinnvoll ist, sollte seine
> Anwendung prinzipiell auch unter Windows7/8 laufen, wenn sie vorher
> keine Probleme gemacht hat. Die Art der Verwendung und Zuteilung von
> Speicher spielt hierbei keine Rolle mehr.
Falsch!
Ich mußte genau das leider gerade am eigenen Leib erfahren. Eine Applikation
(Access-Frontend, SQL-Backend)die seit vielen Jahren läuft, lief zuletzt in
der Version Access 2003 auf XP bzw. Server 2003.
Nach der Migration des Frontends auf Access 2010 kam es in der Testphase
beim Kunden immer wieder zu der Fehlermeldung "Nicht genug Speicher zum
Ausführen der ...".
Nach sehr intensiver Forschung war das Ergebnis der Unterschied im
Memorymanagement des Betriebssystems. Access hat also nichts damit zu tun,
viel mehr das Betriebssystem. Genau darauf wollte ich hinweisen und den Tipp
geben darauf zu achten.
Der Kunde kann nicht erkennen, dass das OS Schuld ist.
Dieses Problem wurde mir MS offiziell bestätigt nachdem ich Ihnen eine
Beispieldatenbank zugesendet habe in der sich der Fehler reproduzieren läßt.
Darin läßt sich auch erkennen, dass der Fehler mit Access 64 Bit nicht bzw
deutlich später auftritt, da hier eben mehr Speicher adressiert werden kann.
Hier die offizielle Beschreibung des MS-Supports:
---
Cause
When we load the report, we load each of the sub-report objects and this
requires that we allocate a block of memory for each one. In order to be
able to successfully complete the memory allocation, we must have a
contiguous block of memory that is equal to the allocation size that we are
attempting to make that is free for us to use. Unfortunately when the error
occurs we don't have a large enough block of free memory available to
service the request.
The Access process is consuming large amounts of virtual memory and the
error occurs because there isn't a large enough block of virtual memory left
for what Access attempts to allocate.
It appears that in this scenario, Windows 7 has more blocks of free virtual
memory available than Windows XP but the size of these free blocks are
smaller in Windows 7. This difference comes from a security change starting
with Windows Vista called Address Space Layout Randomization (ASLR) where
"the heap manager will create the heap at a random location to help reduce
the chance that an attempt to exploit a heap-based buffer overrun succeeds."
---
--
So long
Dieter