Oprava: Opakovanými zavést a vyřadit nevracení paměti virtuální 1 MB způsobuje Mtxdm.dll

Překlady článku Překlady článku
ID článku: 232351 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při načítání a uvolňování Mtxdm.dll v rámci smyčku nevracení 1 MB ve virtuální paměti vidět s každé iteraci průchodu smyčkou.

Toto je nejpravděpodobnější dojít v aplikacích, které používají sdružování připojení ODBC a provádění opakované připojení a odpojení z databáze koncovému nebo aplikací ODBC, které mnoho připojení a odpojení koncovému Oracle.

Příčina

Nevracení ve virtuální paměti je příčinou volání TerminateThread() v rámci Mtxdm.dll.

Pokud sdružování připojení je použit v rámci aplikace ODBC, správce řadiče (Mtxdm.dll) načteny spravovat fondu připojení, která je zpracována pracovní podproces spuštěn v rámci Mtxdm.dll.

Při ukončení aplikace pracovní podproces ukončit voláním TerminateThread(), které není vyčistit a uvolněte 1 MB paměti přidělené zásobníku pracovní podproces.

Stejné chování viditelné při provádění opakované připojení a odpojení serveru databáze Oracle, protože ovladač Microsoft Oracle ODBC načte Mtxdm.dll zda sdružování připojení je používán nebo není.

Řešení

Tento problém vyřešíte získat nejnovější aktualizaci service pack pro systém Windows NT 4.0 nebo aktualizace jednotlivých softwaru. Informace o získání nejnovější aktualizace service pack přejděte na:
Informace o získání aktualizace jednotlivých softwaru obraťte se na služby podpory produktů. Úplný seznam telefonních čísel technické podpory společnosti a informace o cenách technické podpory přejděte na následující adresu v Internetu:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server nebo Workstation 4.0

Tento problém vyřešíte získat nejnovější aktualizaci service pack pro systém Windows NT 4.0 nebo aktualizace jednotlivých softwaru. Informace o získání nejnovější aktualizace service pack přejděte na:
Informace o získání aktualizace jednotlivých softwaru obraťte se na služby podpory produktů. Úplný seznam telefonních čísel technické podpory společnosti a informace o cenách technické podpory přejděte na následující adresu v Internetu:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Windows NT Server 4.0 Terminal Server Edition

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro systém Windows NT Server 4.0 Terminal Server Edition. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
152734Jak získat nejnovější aktualizaci Service Pack pro systém Windows NT 4.0

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. Tento problém byl poprvé opraven v systému Windows NT Server verze 4.0, Terminal Server Edition Service Pack 6.

Další informace

Ruční instalace Hotfix 051099a

Poznámka: Chcete-li získat tuto opravu hotfix, musí kontaktovat odbornou. Naleznete další informace tohoto článku v části řešení.
  1. Zavření nebo zastavení aplikací nebo služeb, používáte Mtxdm.dll. To může zahrnovat server IIS, Microsoft Transaction Server (MTS), koordinátor distribuovaných transakcí (DTC) a všechny aplikace ADO nebo ODBC.
  2. Stažení opravy hotfix (051099a.exe) do dočasného adresáře a spuštění extrahovat následující soubory:
    • Mmtxdm.dll
    • Readme.txt
  3. Vyhledejte a přejmenujte aktuální verze Mtxdm.dll, které by měl být ve složce \Winnt\System32 u počítačů se systémem Windows NT a ve složce \Windows\System počítačů se systémem Windows 9 x.
  4. Verze opravy hotfix Mtxdm.dll kopírovat do stejného umístění a restartování služeb a aplikací.

Kroky pro reprodukci chování

Vytvořit aplikaci konzoly C/C++ pomocí následující kód. Spustit tuto aplikaci při použití sledování výkonu k zobrazení virtuálních bajtů pro aplikaci.

Poznámka: Tento ukázkový kód používá zdroj dat ODBC, který se připojuje k koncovému Oracle, protože ovladač Microsoft Oracle ODBC načte Mtxdm.dll a více snadno znázorňuje problém.
   #include        <windows.h>
   #include        <stdio.h>
   #include        <sql.h>
   #include        <sqlext.h>
   #include        <assert.h>

   #define CK_RT(x) if( x != SQL_SUCCESS && x != SQL_SUCCESS_WITH_INFO)    assert(0)

   void main(){
       HENV        henv;
       HDBC        hdbc;
       RETCODE     rc = SQL_SUCCESS;
       char        *dsnStr="DSN=OracleServer;UID=scott;pwd=tiger;";
       short       rtnLen = 0;
       UCHAR       rtnDSN[999] = "";
       int         i,x;


       for (i=0; i < 100; i++)
   	{
               rc = SQLAllocEnv(&henv);
               CK_RT(rc);
               rc = SQLAllocConnect(henv, &hdbc);
               CK_RT(rc);
               rc = SQLDriverConnect(hdbc,
                         NULL,
                         (unsigned char *)dsnStr,
                         strlen(dsnStr),
                         rtnDSN,
                         255,
                         &rtnLen,
                         SQL_DRIVER_NOPROMPT);

               CK_RT(rc);
               SQLDisconnect(hdbc);
               SQLFreeConnect(hdbc);
               SQLFreeEnv(henv);
	   }
   }
				

Vlastnosti

ID článku: 232351 - Poslední aktualizace: 7. dubna 2006 - Revize: 4.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Windows NT 4.0
  • Microsoft Data Access Components 2.1 Service Pack 2
Klíčová slova: 
kbmt kbqfe kbhotfixserver kbbug kbfix kbmdac210fix kbmts200fix kbsdkodbc351fix kbvirtualmem KB232351 KbMtcs
Strojově přeložený článek
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.
Projděte si také anglickou verzi článku:232351

Dejte nám zpětnou vazbu

 

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