在 .NET Framework 應用程式中使用 ADO 和 ADO MD 時收到意外的錯誤

徵狀

在 Microsoft .NET Framework 應用程式中,您可以透過 COM 交互操作使用 Microsoft ActiveX 資料物件(ADO)和 Microsoft ActiveX 資料物件(多維)(ADO MD)。 有時候,在 [壓力] 底下,使用這些技術的 .NET Framework 應用程式會遇到意外的錯誤,例如當機和其他間歇例外狀況。 這對於多執行緒應用程式(例如在 Microsoft ASP.NET 中執行的應用程式)特別常見。

原因

ADO 和 ADO MD 是在 .NET Framework 發行之前所設計,且要在非管理元件物件模型(COM)環境中使用。 雖然您可以透過 COM 交互操作存取這些技術,但我們不建議您這麼做。 這包括 Microsoft Visual Studio .NET 隨附的 ADO 主要 Interop 元件的使用。因為它們不是用來以這種方式使用,所以在交互操作案例中並不會對 ADO 和 ADO MD 進行大量測試。

解決方案

我們建議您使用 Microsoft ADO.NET 或 Microsoft ADOMD.NET,而不是透過交互操作使用傳統的 ADO 或 ADO MD。 這些技術是專門為提供 .NET Framework 應用程式中的資料存取而開發,不需要額外的 COM 交互操作複雜程度。

狀態

這些元件不會有任何未來修正或增強功能,無法修正只發生在受管理的 .NET Framework 應用程式中的問題。 一般來說,這不會影響到 ADO 和 ADO MD 的後續修正程式或增強功能。 我們會繼續解決在未受管理的應用程式(包括 Microsoft Visual Basic 6.0、Microsoft Visual c + + 及 Microsoft ASP)中使用 ADO 和 ADO MD 時所發生的問題。

因應措施

若要在 Microsoft ASP.NET 中解決這個問題,請將@ Page指令的ASPCompat屬性設為true。 當這個屬性設定為true時,可以在單一線程單元(STA)執行緒上執行頁面。 在 STA 執行緒上執行頁面,可減少意外地對 ADO 物件或 ADO MD 物件進行多執行緒存取的機會。 注意: 只要將此程式碼遷移至 ADO.NET,或是使用傳統 ADO 的 ADOMD.NET..NET Framework 應用程式,就可以使用這個暫時的因應措施,或使用 Visual Studio .NET 隨附的 ADO 的主要互通性元件。 此因應措施可能會減少一些問題。 不過,它可能不會防止所有問題。 請勿將此因應措施當作長期解決方案使用。

參考

ADO.NET 是在 Microsoft .NET Framework 中提供。 如需 .NET Framework 的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:

下列檔案可從 Microsoft 下載中心下載:Download 立即下載 ADOMD.NET 套件。如需有關如何下載 Microsoft 支援檔案的其他資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

如何從線上服務取得 Microsoft 支援檔案Microsoft 已對此檔案進行病毒掃描。 Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案。 檔案儲存在安全性增強的伺服器上,可協助防止對檔案進行任何未經授權的變更。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×