[FIX] ADO 2. 5 ストリームとオブジェクトのレコードを使用するリソースをリークします。

文書翻訳 文書翻訳
文書番号: 282177 - 対象製品
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

マーシャリング データ、インプロセス ActiveX データ オブジェクト (ADO) レコード を使用または Stream オブジェクト、メモリ リークが生じることとは最終的と、プロセスのメモリが不足します。 このリークは、 コマンド レコードセット オブジェクトなどの他の ADO オブジェクトと発生しません。

このリークは、Microsoft データ アクセス コンポーネント (MDAC) 2. 5 では発生が MDAC 2. 6 では発生しません。

原因

レコード Stream オブジェクトは、Active Template Library (ATL) AtlMarshalPtrInProc 関数を使用する呼び出し元に戻すプロキシ情報を送信するのにために使用する、ストリームを作成します。 レコード ストリーム オブジェクトは破棄すると、ときに、 リリース 関数はだけに対して呼び出されます、ストリームこのストリームに割り当てられたメモリを解放するには、 AtlFreeMarshalStream 関数を呼び出さずに。

解決方法

MDAC

この問題を解決するには、Microsoft MDAC 2. 5 の最新のサービス パックの入手します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください:
293312[INFO] 最新の MDAC 2.5 Service Pack の入手方法
ただし、これより新しい修正ファイルがリリースされている可能性もあります:
   Date          Version        Size               File name
   ------------------------------------------------------------

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

Windows 2000

この問題を解決するには、Windows 2000 の最新のサービス パックを入手してください。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください:
260910最新の Windows 2000 Service Pack の入手方法
この修正プログラムの英語版は次のファイル属性がありますが以降:
   Date        Time    Version       Size       File name
   ----------------------------------------------------------
   5/29/2001   02:56p  2.52.6019.1   487,696    Msado15.dll
				

回避策

MDAC 2. 5 でこの問題の回避策はありません。

状況

MDAC

マイクロソフトではこれが、この資料の冒頭に記載されているマイクロソフト製品のバグとして認識しています。 この問題は、まず MDAC 2. 5 SP3 で修正されました。

この問題は、MDAC 2. 6 では発生しません。

Windows 2000

マイクロソフトとして認識していますこの問題をこの資料の冒頭に記載されているマイクロソフト製品の問題。 この問題は、まず Windows 2000 Service Pack 3 で修正されました。

詳細

Record または Stream オブジェクトは、マーシャリング インプロセス、インターネット インフォメーション サーバー (IIS) や Microsoft トランザクション サーバー (MTS) 環境でこのメモリ リークの発生の大部分と COM + です。 このリークは場所このマーシャリングが発生しない、スタンドアロンの Microsoft Visual Basic アプリケーションのような環境では発生しません。

問題の再現手順

  1. テキスト ファイルに以下のサンプル コードを貼り付け、"ADODBMem.vbs"の名前で保存します。
  2. Windows スクリプティング ホスト (CScript.exe) を使用してこのファイルをコマンド プロンプトから実行します。 たとえば。
    cscript ADODBMem.vbs
  3. メッセージが表示されたら、パフォーマンス モニター (パフォーマンス モニター) を起動し、実行可能ファイル、CScript の Private Bytes カウンターを選択します。
  4. スクリプトに戻って示されているように、ADO オブジェクトの作成ステップします。 メモ パフォーマンス モニターは、増加 レコード ] および [ Stream オブジェクトに割り当てるメモリ量を示します。

サンプル コード

'//////////////////////////////////////////////////////////////////////////////////////////////// 
' +
'   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"
'//////////////////////////////////////////////////////////////////////////////////////////////// 

				

プロパティ

文書番号: 282177 - 最終更新日: 2014年2月24日 - リビジョン: 3.2
この資料は以下の製品について記述したものです。
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5
キーワード:?
kbnosurvey kbarchive kbbug kbfix kbado260fix kbqfe kbwin2000sp3fix kbmdac260fix kbmdac250sp3fix kbhotfixserver kbmt KB282177 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:282177
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

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