Oprava: Použití parametrizované příkaz in ADO nevracení připojení

Překlady článku Překlady článku
ID článku: 247757 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při použití Windows Foundation Classes pro Java (WFC) a ADO a otevření objektu recordset pomocí příkazu parametrizované není správně sdružených a recyklaci připojení správně uzavřen, výsledkem prozrazený připojení. Tento problém vyřešit, volání System.gc() po zavření připojení ADO v objektu Java COM. V situacích, Normální není nutné volat System.gc() po zavření připojení ADO do volných připojení.

Řešení

Tento problém je vyřešen v nejnovější aktualizace service Pack pro systém Windows 2000 a součásti 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
  • Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft Data Access Components 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í atributy souborů nebo novější:
File name       Date        Size      Version      
-----------------------------------------------------
Msado15.dll     1/26/2000   329KB     2.12.4926.0
				

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v Objects2.1 SP2 Microsoft Data Access a 2.5. Tento problém byl poprvé opraven v Microsoft Data Access Components 2.5 Service Pack 2 a Windows 2000 Service Pack 2.

Další informace

Toto připojení/relaci sdružování problému dojde, pokud jsou přítomny všechny následující podmínky:
  1. Microsoft Data Access Objects 2.1 SP2 nainstalován.
  2. Parametrizované objekt ADO příkaz se používá.
  3. Objekt Java COM hostitelem v MTS nebo COM +.
  4. Objekt Java COM vytvoří odpojené sady záznamů.

Kroky pro reprodukci tohoto chování

  1. Vytvoření projektu objektu Java COM s názvem ConnLoss s Visual J ++ 6.0 pomocí následující kód:
    import com.ms.wfc.data.*;
    
    public class ConnLoss
    {
      // Modify this connection string to point to a running SQL Server.
      private static String m_connect = 
        "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;";
      public com.ms.wfc.data.adodb._Recordset 
        FindAuthorsLastName( String au_id, boolean fCallGC )
      {
        Connection conn = null;
        Command cmd   = null;
        Recordset rs  = null;
        try
        {     
          // Open connection to SQL Server.
          conn = new Connection();
          conn.setCursorLocation( AdoEnums.CursorLocation.CLIENT );
          conn.open( m_connect );
          
          // Prepare command object.
          cmd = new Command();
          cmd.setActiveConnection( conn );
          
          cmd.setCommandText( "select au_lname from authors where au_id=?" );
        
          cmd.getParameters().append( 
            cmd.createParameter( "au_id", 
                       AdoEnums.DataType.VARCHAR,
                       AdoEnums.ParameterDirection.INPUT,
                       20, au_id ) );
          
          // Execute command.
          rs = cmd.execute();
          
          // Disconnect recordset and close connection.
          rs.setActiveConnection( (Connection) null );
          conn.close();
          
          // Call gc if requested.
          if (fCallGC) System.gc();
          
          // Return disconnected recordset.
          return (com.ms.wfc.data.adodb._Recordset) rs.getDataSource();
          
        }
        catch( AdoException adoEX )
        {
          // Log errors here.
        }
        return null;
      }
    }
    					
  2. Přidat objekt Java COM MTS nebo balíčku COM +.
  3. Volání objektu Java COM s následující Microsoft Visual Basic (VBA) kód:
    Sub TestConnLoss()
    Dim objCL As Object
    Dim i As Long
    Dim rs As ADODB.recordset
      set objCL = CreateObject("ConnLoss.ConnLoss")
      For i = 1 To 100
        Set rs = objCL.FindAuthorsLastName("756-30-7391", False)
        Debug.Print rs.Fields("au_lname").Value
        rs.Close
        Set rs = Nothing    
      Next i    
    End Sub
    					
  4. Spustit sledování výkonu WINDOWSNT v počítači, kde je umístěn SQL Server 7.0 a sledování uživatelských připojení pod čítač výkonu SQL Server: Obecné Statistika.
  5. Spustit klienta kód VBA. V tomto okamžiku 100 připojení uživatelů jsou generovány kód vykázání sledování výkonu WINDOWSNT označující, že sdružování relací OLE DB nepracuje správně pro používaný objekt Java COM zprostředkovatele SQL OLE DB.

  6. Změnit druhý parametr FindAuthorsLastNameTrue k aktivaci kód System.gc().
  7. Zastavte a restartujte balíčku MTS nebo COM +.
  8. Kód VBA klienta spustit podruhé.
V tomto okamžiku pouze několik uživatelských připojení jsou generovány kód označující, že sdružování relací OLE DB pracuje správně pro používaný objekt Java COM při volání System.gc() zprostředkovatele SQL OLE DB.

Poznámka: volání System.gc() výrazně ovlivňuje výkon objektu Java COM, takže volání System.gc() obecně měli vyhnout při aspektem je výkon. Obchodní objekt se může například kódované pouze volání System.gc() volání metody každých 10 nebo 100 snížit za metoda výkonu dopad volání System.gc(). Také použití parametrizované příkaz objekt mohl pevný kódování hodnoty parametrů vyhnout do řetězce SQL a pomocí parametru tokeny jako ve výše uvedeném příkladu; tento problém také circumvents.

Vlastnosti

ID článku: 247757 - Poslední aktualizace: 28. února 2014 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Visual J++ 6.0 Standard Edition
Klíčová slova: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbfix kbmdac250sp2fix KB247757 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:247757

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