FIX: SQLOLEDB: Incorrect Transaction Enlistment Causes Hang and Drain Abort Entry (297266)
The information in this article applies to:
- Microsoft OLE DB Provider for SQL Server 2000 2000.80.194
- Microsoft Data Access Components 2.6
This article was previously published under Q297266 SYMPTOMS When you use the native SQL Server OLE DB provider
(Sqloledb.dll) in a transactional environment, the computer may stop responding
(hang) for the length of the transaction timeout setting. This occurs
under the following conditions:
- You are using the SQL Server provider in a transactional
environment, such as MTS/COM+.
- The SQL Server database version is 7.0.
- You are using ADO client-side cursors.
- The cursor engine determines that more meta data is needed
from the provider.
If SQL Profiler is used to monitor the client activity, a drain
abort entry appears in the Event Sub Class data column, and the associated
Transaction ID appears in the Text data column. The application then stops
responding until the transaction timeout has passed. This occurs with
version of the SQL Server provider that ships with SQL Server 2000 and MDAC
2.6. It does not occur with earlier versions. This behavior also does not occur
when you use SQL Server 2000. CAUSE The ADO client cursor engine requests extra meta data from
a provider if it determines that some meta data is missing. When the SQL Server
provider is queried for this meta data, an undercover connection is spawned to
collect this information from the server.
Normally, these unexposed
connections should not be enlisted in any current transactions. However, a
missing function parameter in the provider causes these meta data connections
to incorrectly enlist in the transaction, which causes the application to stop
responding until the transaction timeout occurs. RESOLUTION
To resolve this problem, obtain the latest service pack for Microsoft Data Access Components
2.6. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
300635 INFO:
How to Obtain the Latest MDAC 2.6 Service Pack
Hotfix
The version of this English 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
------------------------------------------------------------
04/11/2001 2000.80.380.0 483,412 bytes Sqloledb.dll
04/11/2001 2000.80.380.0 61,440 bytes Sqloledb.rll
WORKAROUND To work around this problem, use one or more of the following
recommendations. Note that these recommendations may not work in all
circumstances. The symptoms and behavior may depend on the combination of SQL
statements, statement types, and cursor types that are currently active on the
connection.
- Use an earlier version of the SQL Server provider, such as
the version that was released in MDAC 2.5 Service Pack 1.
- Do not use client-side cursors.
- Use statements that generate cursors, rather than
firehose-mode statements.
- Avoid transactional contexts, if possible.
STATUSMicrosoft
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 Data Access Components 2.6 Service Pack
1.
Modification Type: | Minor | Last Reviewed: | 9/26/2005 |
---|
Keywords: | kbHotfixServer kbQFE kbbug kbDatabase kbfix kbMDAC260sp1Fix kbQFE KB297266 kbAudDeveloper |
---|
|