Microsoft KB Archive/195017

= FIX: Memory Leak in Microsoft Access ODBC Driver in MDAC 2.0 =

Article ID: 195017

Article Last Modified on 12/3/2003

-

APPLIES TO


 * Microsoft Open Database Connectivity Driver for Access 3.5
 * Microsoft Data Access Components 2.0
 * Microsoft Data Access Components 2.1 Service Pack 2
 * Microsoft Data Access Components 2.5

-



This article was previously published under Q195017



SYMPTOMS
The Microsoft Access ODBC Driver, version 3.51.1713, which is provided with the Microsoft Data Access Components version 2.0, leaks memory when opening a connection, performing a query on that connection, and then closing the connection.



RESOLUTION
To work around this behavior, keep the connection open as long as possible. Minimizing the number of times you make a connection will minimize the memory leak.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

This bug was corrected in in a newer version of the Access ODBCDriver included with MDAC 2.1.



MORE INFORMATION
As an example, the following code causes several hundred bytes to leak for each iteration through the loop: *****  for(int nLoops=0; nLoops < 1000; nLoops++) {    RETCODE rc; SQLAllocEnv(&henv); SQLAllocConnect(henv, &hdbc);

SWORD nResult; UCHAR szConnectOutput[255]; rc = SQLDriverConnect(hdbc, NULL,(UCHAR*)(const char*)"DSN=MYDSN",                       SQL_NTS,szConnectOutput, 255, &nResult,                        SQL_DRIVER_COMPLETE);

SQLAllocStmt(hdbc, &hstmt); rc = SQLExecDirect(hstmt, (UCHAR *)"SELECT * from table1", SQL_NTS);

SQLFreeStmt(hstmt,SQL_DROP); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); }  *****

Keywords: kbbug kbfix kbdatabase kbjet kbdriver KB195017

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.