Update: Zugriffsverletzung tritt auf, bei ADO-Recordset in Multithread-Anwendung schließen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 272373 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn multithreaded (ActiveX Data Objects) Code unter hoher Belastung auf einen Multiprozessor-Computer ausgeführt wird, kann eine Zugriffsverletzung (AV) auftreten, wenn ein ADO- Recordset zu schließen. Untersuchung der Aufrufliste zum Zeitpunkt der AV (mit den entsprechenden Debugsymbolen installiert) zeigt, dass der letzte ADO-Aufruf auf dem Stapel ein Aufruf der ADO interne Funktion msado15 ist! CCollectionArray__Delete.

Lösung

Dieses Problem wird in der neuesten Service Packs für Microsoft Windows 2000, MDAC 2.5 und MDAC 2.6 und MDAC 2.7 behoben.
  • 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
  • Installieren Sie das neueste Servicepack für Microsoft Data Access Components 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
  • Installieren Sie das neueste Servicepack für Microsoft Data Access Components 2.6, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
    300635INFO: Wie erhalten Sie die neueste MDAC 2.6 Servicepack

Hotfix

Die englische Version dieses Updates haben die folgenden Dateiattribute oder höher:
   Date         Version       Size      File name     Platform
   -----------------------------------------------------------
   09/15/2000   2.51.5715.0   487,696   Msado15.dll   x86 
				

Abhilfe

Vermeiden Sie das Schließen eines ADO- Recordset und übergeordneten ADO Connection -Objekts zur selben Zeit in zwei verschiedenen Threads oder wenden Sie diesen Hotfix an.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde erstmals in Microsoft Data Access Components (MDAC) 2.5 Service Pack 2, MDAC 2.6 Service Pack 1, MDAC 2.7 und Microsoft Windows 2000 Service Pack 2.

Weitere Informationen

Zum Reproduzieren des Problems müssen ein ADO- Recordset und übergeordneten ADO- Verbindung geschlossen oder in zwei verschiedenen Threads zur selben Zeit freigegeben werden. Beachten Sie, dass dieses Problem nur erfolgreich auf einem Mehrprozessorsystem reproduziert hat.

Das anfängliche Problem wurde entdeckt, mit die Windows Foundation Classes (WFC) ADO-Java-Klassen in einer COM+-Anwendung unter starker Belastung mit ADO Freethread-Modus festgelegt. Die Microsoft Virtual Machine (Microsoft VM) wird der Freigabe von COM-Objekte, bis der Garbage Collector aktiviert ist. Außerdem führt der Garbage Collector der Freigabe von COM-Objekt auf einen Hintergrundthread. Wenn Sie eine WFC ADO- Verbindung schließen, fügt diese den ADO- Verbindung COM-Schnittstellenzeiger in eine Liste von Zeigern für zukünftige Bereinigung durch den Garbage Collector. Wenn die Hauptanwendungscode ein ADO- Recordset später zur selben Zeit schließt, dass der Hintergrundthread Garbage Collector seine übergeordnete ADO Connection -Schnittstellenzeiger gibt frei, kann die ZUGRIFFSVERLETZUNG auftreten.

Eigenschaften

Artikel-ID: 272373 - Geändert am: Freitag, 7. April 2006 - Version: 8.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.6
Keywords: 
kbmt kbqfe kbhotfixserver kbbug kbfix kbmdac250sp2fix kbmdac260sp1fix KB272373 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: 272373
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