Microsoft KB Archive/320696

= OLE DB Session Pooling Causes 100 Percent CPU Usage (MDAC 2.7) =

Article ID: 320696

Article Last Modified on 9/27/2005

-

APPLIES TO


 * Microsoft Data Access Components 2.7

-



This article was previously published under Q320696



SYMPTOMS
Microsoft COM+ continuously tries to unload OLE DB and succeeds. When OLE DB is unloaded, the session pool and its threads are freed. At the same time, new calls are being made into OLE DB, which causes the DLL to load again and the session pool to be created. The loading and unloading creates a conflict, which causes short timeouts. Additionally, you may see CPU usage go up to 100 percent for a short time (approximately 15 seconds).



CAUSE
COM+ calls the DllCanUnLoadNow function, and the OLEDB32.dll file returns true for this call. Although DllCanUnLoadNow is an inquiry, OLE DB implementation assumes that DllCanUnLoadNow is a command. As a result, OLE DB sends a &quot;true&quot; flag. However, OLEDB32.dll should not send &quot;true&quot; to this call because this call still has resources for session pooling. After COM+ receives &quot;true&quot; from OLEDB32.dll, COM+ unloads OLEDB32.dll. In the COM+ single-threaded apartment (STA) thread pool, this occurs very frequently. When OLEDB32.dll and the OLE DB resource pool are loaded and unloaded, CPU usage goes up to 100 percent, and you experience a delay.



RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.   Date         Version       Size     File name     Platform ---  11-Apr-2002  2.70.8611.0   413,696  OLEDB32.dll   x86



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft SQL Server 2000 Service Pack 3. This bug was corrected in MDAC 2.7 Service Pack 1 (SP1).



MORE INFORMATION
For additional information about this problem if you are using a different version of Microsoft Data Access Components, click the article number below to view the article in the Microsoft Knowledge Base:

320700 OLE DB Session Pooling Causes 100% CPU Usage (MDAC 2.5)

320698 OLE DB Session Pooling Causes 100% CPU Usage (MDAC 2.6)

Additional query words: session pool oledb32 reach 100% CPU utilization

Keywords: kbbug kbfix kbsqlserv2000presp3fix kbqfe kbsqlserv2000sp3fix kbhotfixserver KB320696

-

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

© Microsoft Corporation. All rights reserved.