Oprava: nevracení paměti virtuální s velkým počtem souběžně otevřít sady záznamů

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.

312575
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
Aplikace nebo služby s velkými čísly (více než 500) souběžně otevřené sady záznamů ActiveX Data Objects (ADO), které jsou otevřené a uzavřené často může docházet k nevrácení virtuální paměti, který vede k fragmentace paměti a chyb out paměti.

Tento problém může nastat v libovolné verze součástí Microsoft Data Access Components (MDAC) mezi 2.5 RTM (2.50.4403.12) a 2.6 SP1 (2.61.7326.6). Tento problém nenastává v MDAC 2.7.

Tento problém není specifická pro zprostředkovatele; může dojít s nativní zprostředkovatele SQL Server (Sqloledb.dll), nativní zprostředkovatele Oracle (msdaora.dll), zprostředkovatele ODBC (msdasql.dll) stroj kurzoru klienta a součásti, která používá kód sdílené paměti.
Příčina
Po vydání sady záznamů uložte rutiny správy paměti MDAC paměti přidělené pro ně v seznamu "Vzhled aside" než ve skutečnosti uvolňování paměti. Důvodem vyhnout režii vzniklých zcela uvolnění a opakované přidělení paměti.

Ve výchozím nastavení bude kód správu sdílené paměti používané součásti MDAC 2.5 (Msdatl2.dll) a MDAC 2.6 (Msdatl3.dll) uložit až 500 tyto přidělení; nic přes toto množství je uvolněno prostřednictvím volání funkce VirtualFree.

Kódování chyby v kódu správy paměti díky nesprávné volání k VirtualFree, že paměť skutečně vydána. Návratový kód z VirtualFree není zaškrtnuto a aplikace přijímá žádná indikace, že byl prozrazený paměti.
Řešení
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ů:

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				
Pouze MDAC 2.5: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
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					

Jak potíže obejít
Chcete-li tento problém vyřešit, můžete navrhnout aplikaci nebo službu tak, aby méně než 500 sady záznamů jsou otevřené souběžně.

Zmírnění problému úpravou následujících nastavení v registru:
    HKLM\Software\Microsoft\MDAC         MaxReservedBlocks    HKLM\Software\Microsoft\MDAC         ReservedMemorySize				
Poznámka tyto položky registru ve výchozím nastavení neexistují; potřebujete přidat potom ručně. Obě položky jsou hodnoty DWORD.

Výchozí hodnota MaxReservedBlocks je 500. Pokud tuto hodnotu zvýšit, další bloky bude uložen v seznamu vzhled aside správce paměti (a proto roamingovými Další využití paměti v aplikaci) ale nebudou opakovaně použity bloky. Pokud nižší tato hodnota se zvýší rychlost, jakou paměť prozrazený.

Výchozí hodnota ReservedMemorySize je 1 MB. Dolní tato hodnota omezit velikost virtuální paměti přidělení; však to může snížit výkon Pokud více paměti než je k dispozici v bloků paměti je požadováno.
Prohlášení
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.

SOUČÁSTI MDAC 2.5

Tento problém byl poprvé opraven v aktualizaci Service Pack 3 pro MDAC 2.5.Tento problém byl poprvé opraven aktualizací Windows 2000 Service Pack 3.
Další informace
V součásti MDAC 2.5 přidělení nevrácená paměť bude složen pouze z vyhrazené paměti a bude mít žádné potvrzených stránky; například:
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 přidělení nevrácená paměť bude obsahovat alespoň 10 KB (65 536 bajtů) z potvrzena stránek; například:
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- --,				
v případě buď sledování aplikace nebo služby pomocí sledování výkonu zobrazuje nadměrné použití virtuálních bajtů.
fragmentace 500 mimo současně souběžně otevřít sady kbMDAC virtuální paměti rezervované nevracení maxreservedblocks reservedmemorysize velké číslo záznamů

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

Vlastnosti

ID článku: 312575 - Poslední kontrola: 02/28/2014 12:03:30 - Revize: 4.1

  • 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
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB312575 KbMtcs
Váš názor