Oprava: ADO 2.5 nevrací zdroje při použití Stream a záznam objektů

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

282177
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Nakonec při mezipaměti sdružených dat dat v procesu pomocí záznamů ActiveX Data Objects (ADO) nebo toku objektů nevracení paměti může dojít, může způsobit proces nedostatek paměti. Toto nevracení nedochází s jinými objekty ADO například Příkazy a Recordset objekty.

Toto nevracení dochází v Microsoft Data Access Components (MDAC) 2.5 ale nedochází v MDAC 2.6.
Příčina
Záznam a Stream objekty pomocí funkce Active Template Library (ATL) AtlMarshalPtrInProc vytvořit datový proud, který slouží k odeslání informace o proxy serveru volající. Při záznamu a Stream objekty jsou zničeny, funkce Release jednoduše nazývá na proud, bez volání funkce AtlFreeMarshalStream uvolnit paměť přidělená pro tento datový proud.
Řešení

Součásti MDAC

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft MDAC 2.5. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
293312INFORMACE: Jak získat nejnovější MDAC 2.5 Service Pack
Anglická verze této opravy má následující nebo vyšší atributy souborů:
   Date          Version        Size               File name   ------------------------------------------------------------   12/14/2000    2.53.6013.0    491,792 bytes      Msado15.dll						

WINDOWS 2000

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro systém Windows 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
260910Jak získat nejnovější aktualizaci Service Pack pro systém Windows 2000
Anglická verze této opravy má následující atributy souborů nebo novější:
   Date        Time    Version       Size       File name   ----------------------------------------------------------   5/29/2001   02:56p  2.52.6019.1   487,696    Msado15.dll				

Možné řešení

Neexistuje žádné řešení tohoto problému s součásti MDAC 2.5.
Prohlášení

Součásti MDAC

Společnost Microsoft potvrzuje, že se jedná o chybu v produktech společnosti uvedených na začátku tohoto článku. Tento problém byl poprvé opraven v aktualizaci Service Pack 3 pro MDAC 2.5.

Tento problém nenastává v MDAC 2.6.

WINDOWS 2000

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku. Tento problém byl poprvé opraven aktualizací Windows 2000 Service Pack 3.
Další informace
Toto nevracení paměti predominantly dochází v prostředích, kde jsou objekty záznam nebo proud zařazenými v procesu, jako je například Internet Information Server (IIS) a Microsoft Transaction Server (MTS) / COM +. Toto nevracení nedochází v prostředích, kde tato zařazovací nedojde, například samostatnou aplikaci Microsoft Visual Basic.

Kroky pro reprodukci chování

  1. Ukázkový kód pod vložit do textového souboru a uložte s názvem "ADODBMem.vbs".
  2. Z příkazového řádku spusťte tento soubor pomocí prostředí Windows Scripting Host (CScript.exe). Například:
    cscript ADODBMem.vbs
  3. Po výzvě spusťte sledování výkonu (PerfMon) a vyberte čítač nesdílených bajtů spustitelný CScript.
  4. Vrátit do skriptu a Krokovat vytváření objektů ADO označeno. Poznámka: PerfMon ukazuje rostoucí množství paměti přidělené záznam a Stream objekty.

Ukázkový kód

'//////////////////////////////////////////////////////////////////////////////////////////////// ' +'   File:       adodbmem.vbs''   Copyright:  (c) 2000 Microsoft Corporation''   Contents:   Creates/destroys ADODB objects and allows to see memory usage (leaks).''   Comments:   CScript.exe v2.0 required (comes with Windows 2000; just copy to run under NT4)'               WScript.exe will NOT work''               Usage: cscript adodbmem.vbs'               Use PerfMon to see the counter "Private Bytes" in process "cscript"' -'//////////////////////////////////////////////////////////////////////////////////////////////// Const REPT_CNT = 1000Private Function CreateOnce(objName, bStop)  Dim obj  On Error Resume Next  If bStop = True Then    WScript.StdOut.Write  "Create an instance of " & objName & ">"    WScript.StdIn.ReadLine  End If  Set obj = CreateObject(objName)  If Err.Number <> 0 Then    WScript.Echo "CreateObject(" & objName &") failed: " & Err.Description    CreateOnce = False    Exit Function  End If  If bStop = True Then    WScript.StdOut.Write objName & " created. Destroy>"    WScript.StdIn.ReadLine  End If  Set obj = Nothing  If bStop = True Then    WScript.Echo objName & " destroyed."  End If  CreateOnce = TrueEnd Function'//////////////////////////////////////////////////////////////////////////////////////////////// Private Sub TryObject(objName)  Dim i  WScript.StdOut.Write "Create and destroy " & objName & " " & REPT_CNT & " times>"  WScript.StdIn.ReadLine  For i = 1 To REPT_CNT    If Not CreateOnce(objName, False) Then Exit For  Next  WScript.StdOut.Write "Done. "End Sub'//////////////////////////////////////////////////////////////////////////////////////////////// Private Sub ShowVersion  Dim sVer  Dim o  Set o = CreateObject("ADODB.Connection")  sVer = o.Version  Set o = Nothing  WScript.StdOut.Write "ADODB version " & sVer & " loaded. Hit Enter to start>"  WScript.StdIn.ReadLineEnd Sub'//////////////////////////////////////////////////////////////////////////////////////////////// Public sub Main()  WScript.StdOut.Write "ADODB memory leak test." & vbNewLine & _                "Connect Perfmon: process - cscript, counters - Private Bytes." & vbNewLine & _                "Hit Enter then ready>"  WScript.StdIn.ReadLine  ShowVersion  TryObject "ADODB.Command"  TryObject "ADODB.Stream"  TryObject "ADODB.Recordset"  TryObject "ADODB.Record"  WScript.StdOut.Write "All Done. Hit Enter to exit>"  WScript.StdIn.ReadLineEnd subCall Main()Wscript.Quit 0'//////////////////////////////////////////////////////////////////////////////////////////////// '                                  End of file "adodbmem.vbs"'//////////////////////////////////////////////////////////////////////////////////////////////// 				
Zařadit zařazování zařazování kbMDAC

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 282177 - Poslední kontrola: 02/28/2014 11:54:46 - Revize: 3.2

  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbado260fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB282177 KbMtcs
Váš názor