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



The information in this article 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 "true" flag. However, OLEDB32.dll should not send "true" to this call because this call still has resources for session pooling. After COM+ receives "true" 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)


Modification Type:MinorLast Reviewed:9/27/2005
Keywords:kbHotfixServer kbQFE kbSQLServ2000sp3fix kbbug kbfix kbSQLServ2000preSP3fix KB320696