Düzeltme: ADO akışı ve kayıt nesneleri kullanılırken, 2.5 kaynakları sızdırıyor

Makale çevirileri Makale çevirileri
Makale numarası: 282177 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Sonuçta ne zaman uzayları arası taşıma veri ActiveX Data Objects (ADO) hizmet (SRV) kaydı ' nı kullanarak i?lem içi veya Akış nesneleri, bir bellek sızıntısı oluşabilir işleminin bellek neden olabilir. Komut ve Recordset nesneleri gibi diğer ADO nesneleri ile bu sızıntısı oluşmaz.

Bu sızıntısı Microsoft Data Access Components (MDAC) 2.5 içinde oluşur, ancak MDAC 2. 6 ' oluşmaz.

Neden

Kayıt ve Akış nesneleri Active Template Library (ATL) AtlMarshalPtrInProc işlevi çağıran için proxy bilgisi göndermek için kullanılan bir akışı oluşturmak için kullanın. Kayıt ve Akış nesneleri yok edilir, yayın işlevi yalnızca akışta, bu akış için ayrılan bellek boşaltmak için AtlFreeMarshalStream işlevi çağırmadan denir.

Çözüm

MDAC

Bu sorunu gidermek için <a0></a0>, Microsoft, MDAC 2.5 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
293312BILGI: son MDAC 2.5 nasıl elde edilir hizmet paketi
Bu düzeltmenin İngilizce sürümünde aşağıdaki dosya öznitelikleri veya üstü bulunur:
   Date          Version        Size               File name
   ------------------------------------------------------------

   12/14/2000    2.53.6013.0    491,792 bytes      Msado15.dll	
	
				

WINDOWS 2000

Bu sorunu gidermek için, en son Windows 2000 hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
260910En son Windows 2000 hizmet paketi nasıl elde edilir
Bu düzeltmenin ingilizce sürümünde aşağıdaki dosya öznitelikleri olmalı veya daha yenisi:
   Date        Time    Version       Size       File name
   ----------------------------------------------------------
   5/29/2001   02:56p  2.52.6019.1   487,696    Msado15.dll
				

Geçici Çözüm

MDAC 2.5 Bu sorun için yok bir geçici çözüm vardır.

Durum

MDAC

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft MDAC 2.5 Service Pack 3'te giderilmiştir.

Bu sorun, MDAC 2. 6 ' oluşmaz.

WINDOWS 2000

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft 2000 Service Pack 3'te düzeltilmiştir.

Daha fazla bilgi

Predominantly düzenlenen i?lem içi, ınternet ınformation Server (IIS) ve Microsoft Transaction Server (MTS) hizmet (SRV) kaydı veya Akış nesneleri olduğu ortamlarda bu bir bellek sızıntısı oluşuyor / COM +. Burada bu sıralanırken, tek başına Microsoft Visual Basic uygulaması gibi oluşmaz ortamlarda bu sızıntısı oluşmaz.

Davranışı yeniden oluşturma adımları

  1. Aşağıdaki örnek kod, bir metin dosyasına yapıştırın ve "ADODBMem.vbs" adıyla kaydedin.
  2. Komut isteminde, Windows Scripting Host (CScript.exe) kullanarak, bu dosyayı çalıştırın. Örneğin,:
    <a1>cscript</a1> ADODBMem.vbs
  3. Istemde bulunulduğunda, performans izleyicisi'ni (PerfMon) başlatın ve özel bayt sayacı yürütülebilir Cscript'i seçin.
  4. Komut dosyasına geri dönmek ve belirtildiği gibi ADO nesneleri ile oluşturulmasını adım. PerfMon artan bir kayıt ve Akış nesneleri ile ayrılan bellek miktarını gösterdiğine dikkat edin.

Örnek kod

'//////////////////////////////////////////////////////////////////////////////////////////////// 
' +
'   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 = 1000

Private 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 = True
End 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.ReadLine
End 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.ReadLine
End sub

Call Main()
Wscript.Quit 0

'//////////////////////////////////////////////////////////////////////////////////////////////// 
'                                  End of file "adodbmem.vbs"
'//////////////////////////////////////////////////////////////////////////////////////////////// 

				

Özellikler

Makale numarası: 282177 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbado260fix kbbug kbfix kbmdac260fix kbwin2000sp3fix KB282177 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:282177

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