FIX: SQLOLEDB Provider incorrectly leaves transaction open
This article was previously published under Q281633 BUG #: 58292 (SQLBUG_70) BUG #: 235846 (SHILOH) On This PageSYMPTOMS Running a certain sequence of commands involving explicit
transactions and parameters in an application program using the SQLOLEDB
Provider incorrectly leaves an uncommitted transaction open. This can cause
severe blocking and other problems. CAUSE Although the SET option 'implicit_transactions' is set to
OFF, the SQLOLEDB Provider is opening an implicit transaction. RESOLUTIONMDAC 2.6To 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 (http://support.microsoft.com/kb/300635/) How to obtain the latest MDAC 2.6 service pack
HotfixIMPORTANT: Microsoft Data Access Components version 2.6 must be installed before applying this hotfix.The English version of this fix should have the following file attributes or later: Date Time Version Size File name Platform ----------------------------------------------------------------- 11/22/00 8:43pm 8.00.0225 491,584 Sqloledb.dll Intel 11/22/00 8:43pm 8.00.0225 61,440 Sqloledb.rll IntelNOTE: Due to file dependencies, the most recent hotfix or feature that contains the above files may also contain additional files. WORKAROUND To work around this problem, do either of the following:
STATUS Microsoft has confirmed this to be a problem in the
Microsoft OLE DB Provider for SQL Server that is included in Microsoft Data
Access Components (MDAC) versions 2.1, 2.5, and 2.6. MDAC 2.6This problem was first corrected in Microsoft Data Access Components 2.6 Service Pack 1.MDAC 2.5This problem was first corrected in the version of Sqlredis.exe that is included with Microsoft SQL Server 7.0 Service Pack 4.MORE INFORMATION Through tracing the application, you can see in SQL Server
Profiler that the SQLOLEDB Provider is sending the following statements to SQL
Server: This causes an 'implicit_transaction' being already opened. When using the OLEDB Provider for ODBC and the SQL Server driver instead, the exact same Visual Basic/ADO code sends the following statements to SQL Server: Thus the FMTONLY SELECT opens an implicit transaction with SQLOLEDB.
However, because the application never opened this transaction, the application
will normally never close it. This transaction will only be closed upon the
next explicit transaction.
APPLIES TO
| Article Translations
|

Back to the top
