Update: virtueller Speicherverlust mit großen Anzahl von gleichzeitiges Öffnen Recordsets

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 312575 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Eine Anwendung oder ein Dienst mit einer großen Anzahl (mehr als 500) von gleichzeitig geöffneten (ActiveX Data Objects) Recordsets, die geöffnet und geschlossen häufig kann einen virtueller Speicherverlust auftreten, der zu einer Fragmentierung des Speichers und Out Speicherfehler führt.

Dieses Problem kann auftreten, in keiner Version von Microsoft Data Access Components (MDAC) zwischen 2.5 RTM (2.50.4403.12) und 2.6 SP1 (2.61.7326.6). Dieses Problem tritt nicht in MDAC 2.7.

Dieses Problem ist nicht für einen bestimmten Anbieter; er kann mit der systemeigenen Provider (SQLOLEDB.dll) für SQL Server, den systemeigenen Provider (msdaora.dll) von Oracle, ODBC-Provider (msdasql.dll), Client Cursor-Moduls und jeder Komponente, die shared Memory-Code verwendet auftreten.

Ursache

Wenn Recordsets freigegeben werden, speichern MDAC Memory Management Routinen den Speicher für diese in einer Liste "aussehen übrigens" zugewiesen, sondern tatsächlich Speicherfreigabe. Dies erfolgt, um den Aufwand durch einen vollständig freigegeben und Neureservieren von Arbeitsspeicher zu vermeiden.

Standardmäßig wird der shared Memory Management-Code verwendet MDAC 2.5 (Msdatl2.dll) und MDAC 2.6 (Msdatl3.dll) bis zu 500 dieser Zuordnungen gespeichert; etwas über diesen Betrag wird durch Aufrufe an die VirtualFree -Funktion freigegeben.

Ein Codefehler im Code Management Speicher macht einen falschen Aufruf von VirtualFree , damit der Speicher nicht tatsächlich freigegeben ist. Der Rückgabecode von VirtualFree nicht aktiviert ist, und die Anwendung empfängt keinen Hinweis darauf, dass der Arbeitsspeicher einen Speicherverlust wurde.

Lösung

Installieren Sie das neueste Servicepack für Microsoft MDAC 2.5, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
293312INFO: Wie erhalten Sie die neueste MDAC 2.5 Servicepack
Die englische Version dieses Updates sollte die folgenden Dateiattribute (oder höher) aufweisen:

MDAC 2.5 SP2
   Date          Version      Size      File name     
   -------------------------------------------------
   25-Oct-2001   2.52.8025.0   78,096   Msdatl2.dll		
   25-Oct-2001   2.52.8025.0   53,520   Msdatt.dll		
   25-Oct-2001   2.52.8025.0  303,376   Msdasql.dll	
   25-Oct-2001   2.52.8025.0   16,384   Msdasqlr.dll
   15-Nov-2001                          Q312575_MDAC25_SP2_x86_en.exe
				
für nur MDAC 2.5: Installieren Sie das neueste Service Pack für Windows 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
260910Wie Sie das neueste Service Pack für Windows 2000 erhalten
MDAC 2.6 SP1
   Date          Version      Size      File name     
   -------------------------------------------------
   25-Oct-2001   2.61.8025.0   94,480   Msdatl3.dll	
   25-Oct-2001   2.61.8025.0   24,848   Msdatt.dll	
   25-Oct-2001   2.61.8025.0  307,472   Msdasql.dll	
   25-Oct-2001   2.61.8025.0   16,384   Msdasqlr.dll
   15-Nov-2001                          Q312575_MDAC26_SP1_x86_en.exe	
				

Abhilfe

Um dieses Problem zu umgehen, können Sie Anwendungen oder Dienste entwerfen, damit weniger als 500 Recordsets gleichzeitig geöffnet sind.

Sie können das Problem zu verringern, indem Sie die folgenden Einstellungen in der Registrierung anpassen:
    HKLM\Software\Microsoft\MDAC         MaxReservedBlocks
    HKLM\Software\Microsoft\MDAC         ReservedMemorySize
				
Hinweis, dass diese Registrierungseinträge standardmäßig nicht vorhanden sind; Sie dann manuell hinzufügen müssen. Beide Einträge sind DWORD-Werte.

Der Standardwert für MaxReservedBlocks ist 500. Wenn Sie diesen Wert erhöhen, weitere Blöcke werden in den Speicher-Manager aussehen übrigens Liste gespeichert (und werden daher fallen weitere Speicherauslastung in der Anwendung), aber die Blöcke wiederverwendet werden kann. Wenn Sie diesen Wert verringern, erhöht die Rate der Arbeitsspeicher einen Speicherverlust ist.

Der Standardwert für ReservedMemorySize ist 1 MB. Sie können diesen Wert die Größe der virtuellen-Speicherzuordnungen begrenzen verringern; jedoch kann diese Leistung verringern, wenn mehr Arbeitsspeicher erforderlich, ist als in die Speicherblöcke verfügbar ist.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

MDAC 2.5

Dieses Problem wurde erstmals im Microsoft MDAC 2.5 Service Pack 3.Dieses Problem wurde erstmals in Windows 2000 Service Pack 3 behoben.

Weitere Informationen

In MDAC 2.5 verlorene Speicherzuordnungen wird vollständig aus reservierten Speicher bestehen und müssen keine zugesicherten Seiten; z. B.:
08230000,      Private,    1048576,     1, -RW-,     
     08230000, Reserve,    1048576,,       -RW- --,
08330000,      Private,    1048576,     1, -RW-,     
     08330000, Reserve,    1048576,,       -RW- --,
08430000,      Private,    1048576,     1, -RW-,     
     08430000, Reserve,    1048576,,       -RW- --,
08530000,      Private,    1048576,     1, -RW-,     
     08530000, Reserve,    1048576,,       -RW- --,
				
in MDAC 2.6 verlorene Speicherzuordnungen mindestens 10 KB (65536 Bytes) der enthalten Commit Seiten; z. B.:
1BF60000,      Private,    1048576,     2, -RW-,     
     1BF60000, Private,      65536,,       -RW- --,
     1BF70000, Reserve,     983040,,       -RW- --,
1C060000,      Private,    1048576,     2, -RW-,     
     1C060000, Private,      65536,,       -RW- --,
     1C070000, Reserve,     983040,,       -RW- --,
1C160000,      Private,    1048576,     2, -RW-,     
     1C160000, Private,      65536,,       -RW- --,
     1C170000, Reserve,     983040,,       -RW- --,
				
in beiden Fällen überwachen die Anwendung oder den Dienst mit Systemmonitor zeigt eine übermäßige Verwendung von virtuelle Bytes.

Eigenschaften

Artikel-ID: 312575 - Geändert am: Montag, 24. Februar 2014 - Version: 4.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5 Service Pack 2
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Keywords: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB312575 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 312575
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com