現在オフラインです。再接続するためにインターネットの接続を待っています

[MDAC]複数レコードセット使用時のメモリ使用量の増加

この記事は、以前は次の ID で公開されていました: JP247140
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
この資料は、アップデートされた Access ODBC ドライバをインストールすると、Access ODBC ドライバを使用している既存の ODBC アプリケーションが機能しなくなり、場合によっては開発者がアプリケーションのコードを書き直す必要が生じる現象について説明しています。
現象
Microsoft Data Access Components (以下、MDAC) 2.1 以降をセットアップすると、新しい Access ODBC ドライバがインストールされます。この新しい Access ODBC ドライバでは Microsoft Jet 4.0 データベース エンジンが使用されているため、Microsoft Access 2000 形式のデータベースだけでなく、それ以前のすべての Access データベース形式にアクセスすることができます。
なお、MDAC 1.5 および MDAC 2.0 に同梱されている Access ODBC ドライバでは、Microsoft Jet 3.5 データベース エンジンが使用されています。

アップデートされた Access ODBC ドライバをインストールすると、Microsoft Jet 4.0 データベース エンジンでの仕様変更や ODBC ドライバの旧バージョンとの互換性の問題により、Access ODBC ドライバを使用している既存の ODBC アプリケーションが機能しなくなり、場合によっては開発者がアプリケーションのコードを書き直す必要が生じます。
原因
Microsoft Jet 4.0 データベース エンジン では、親オブジェクトのデータベース接続が閉じられるまでキャッシュされたリソースが開放されません。ただし、これはメモリ リークではなく、親オブジェクトが閉じられるまで開放されないリソースの割り当てです。
状況
この現象は弊社にて Access ODBC ドライバの問題として認識しています。
回避策
親接続を定期的に閉じて開き直すことで、使用されているメモリが開放されます。

詳細
通常この問題は、1 つのデータベース接続下で複数のレコードセットを開いて閉じた後、各レコードセットである特定の操作を行った場合に発生します。たとえば、開いて閉じた各レコードセットでいくつかのレコードの追加や削除を行った場合に、メモリリークが発生することがあります。また、パラメータ化された SQL ステートメントを使用した場合にも発生する可能性があります。ただし、開いたそれぞれのレコードセットで一部のレコードの読み込みのみを行った場合には、メモリリークは発生しません。このメモリリークは少量であるため、ある特定の状況でメモリリークが発生するかどうかを確認するには、プロセスによって長時間使用されているプライベート バイトを監視する必要があります。

関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 247140 (最終更新日 2001-07-19) をもとに作成したものです。

プロパティ

文書番号:247140 - 最終更新日: 01/10/2015 01:54:21 - リビジョン: 3.1

Microsoft ODBC (Open Database Connectivity) Driver for Access 4.0, Microsoft OLE DB Provider for Jet 4.0

  • kbnosurvey kbarchive kbqfe KB247140
フィードバック