Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

You receive unexpected errors when using ADO and ADO MD in a .NET Framework application

View products that this article applies to.


In a Microsoft .NET Framework application, you can use Microsoft ActiveX Data Objects (ADO) and Microsoft ActiveX Data Objects (Multidimensional) (ADO MD) through COM interop. Sometimes, under stress, .NET Framework applications that use these technologies experience unexpected errors such as crashes and other intermittent exceptions. This is particularly common with multi-threaded applications such as those that run in Microsoft ASP.NET.

↑ Back to the top


ADO and ADO MD were designed before the release of the .NET Framework, and were intended to be used in an unmanaged Component Object Model (COM) environment. Although you can access these technologies through COM interop, we do not recommend that you do this. This includes the use of the ADO Primary Interop Assembly that is included with Microsoft Visual Studio .NET.

Because they are not intended to be used in this way, ADO and ADO MD have not been heavily tested in interop scenarios.

↑ Back to the top


We recommend that you use Microsoft ADO.NET or Microsoft ADOMD.NET instead of using classic ADO or ADO MD through interop. These technologies were developed specifically to provide data access in .NET Framework applications and do not require the added complexity of COM interop.

↑ Back to the top


There will not be any future fixes or enhancements to these components to correct problems that only occur in a managed .NET Framework application. Generally, this does not affect future fixes or enhancements to ADO and ADO MD. We will continue to address issues that occur from the use of ADO and ADO MD in unmanaged applications, including Microsoft Visual Basic 6.0, Microsoft Visual C++, and Microsoft ASP.

↑ Back to the top


To work around this problem in Microsoft ASP.NET, set the ASPCompat attribute of the @ Page directive to true. When this attribute is set to true, the page can be executed on a single-threaded apartment (STA) thread. Executing a page on an STA thread reduces the chance of unexpected multi-threaded access to the ADO object or to the ADO MD object.

Note Only use this as a temporary workaround while the code is being migrated to ADO.NET or to ADOMD.NET.

.NET Framework applications that use classic ADO must use the Primary Interop Assembly for ADO that is included with Visual Studio .NET. This workaround may reduce some problems. However, it may not prevent all issues. Do not use this workaround as a long-term solution.

↑ Back to the top


ADO.NET is provided as part of the Microsoft .NET Framework. For more information about the .NET Framework, visit the following Microsoft Developer Network (MSDN) Web site:The following file is available for download from the Microsoft Download Center:
Download Download the ADOMD.NET package now.For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591 How to Obtain Microsoft Support Files from Online Services
Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.

↑ Back to the top

Keywords: kbarchive, kb, kbinfo, kbprb, kbtshoot, kbado2sweep, kbado2noapply, kbretire

↑ Back to the top

Article Info
Article ID : 840667
Revision : 7
Created on : 4/10/2020
Published on : 4/10/2020
Exists online : False
Views : 345