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

Article translations Article translations
Article ID: 840667 - View products that this article applies to.
Expand all | Collapse all

SYMPTOMS

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.

CAUSE

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.

RESOLUTION

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.

STATUS

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.

WORKAROUND

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.

REFERENCES

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:
http://msdn2.microsoft.com/en-us/netframework/default.aspx
The following file is available for download from the Microsoft Download Center:
Collapse this imageExpand this image
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.

Properties

Article ID: 840667 - Last Review: December 27, 2006 - Revision: 1.4
APPLIES TO
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft SQL Server 2000 Analysis Services
Keywords: 
kbtshoot kbprb kbinfo KB840667
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com