2010-10-29 164 views
6

使用.mdb文件运行多线程(.NET Framework 3.5 SP1 WinForms)桌面应用程序几个小时后(〜6小时Win7 64bit,〜24hours WinXP)为后端我收到以下运行时错误:System.Data.OleDb.OleDbConnectionInternal..ctor:未指定的错误

Exception ->Unspecified error

StackTrace ->

at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)

at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)

at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

at System.Data.OleDb.OleDbConnection.Open()

at NetworkManager.SearchInputFileHandler.GetInputRows(SearchProgramTypeEnumeration programType, Int32 startRowNum, Int32 rowsQty, Boolean setupInProgress, Boolean filterOutUninitializedRows)

看起来像这是一个OleDbProvider错误。

你见过/经历过类似的事吗?

语境:

(1)我只使用

using (OleDbConnection cnn = new OleDbConnection("{{mymdbConnectionStringHere}}")) {

cnn.Open();

...

}

(2)我不使用IN子句中的一些选择SQL表达式指向外部MDB表。

我猜这个问题是由case(2)引起的。尽管这里仍然有一个假设来检查(我的应用程序的核心代码中需要一些代码修复,现在我认为这将值得修复,否则我应该更好地切换到MS SQL后端)。您。

+0

在Open()调用中很可能发生异常,因此请仔细检查连接字符串,数据库凭据等。 – 2010-10-29 11:17:29

+0

未指定的错误..必须是最有用的错误消息。 – 2012-11-19 13:26:29

+0

@Mamta达拉尔:如果问题发生几个小时后,肯定它不是连接字符串和数据库凭证..我有同样的问题,我也渴望找到解决方案。 – Allie 2013-04-02 14:37:27

回答

1

我写过示例测试应用程序 - 问题是由.NET System.Data.OleDb的内部某处的某个错误引起的。

测试VS2008 SP1解决方案发布在:System.Data.OleDb bug demonstration sample.

+0

即使没有使用任何IN子句(或链接表),那么我在这里编写的OleDb示例应用程序在大约70,000个连接创建/破坏之后失败 - TestConnection.ERROR:未指定的错误 - 29/10/2010 22:42:25: 7737. StartTime = 29/10/2010 21:59:33,EndTime = 29/10/2010 22:42:25,TotalCount = 69633,ElapsedTime = 0.7142小时... – ShamilS 2010-10-29 21:06:04

3

有没有在找出此问题或更多stabe变通解决任何进展?

我在ASP.NET应用程序中读取Excel文件时遇到类似的问题。只有在许多用户试图在服务器端处理不同XLS文件的生产环境中才能看到它。在晚上回收IIS服务后,有大约200个请求(打开excel)挂起JET引擎。问题是所有后续的尝试都失败了,所以重试逻辑没有多大帮助。只有IIS重置才能治愈问题。

从我做了有几种选择采取调查:

  1. 切换到其他图书馆看书XLS文件: Excel的OLE自动化 - 需要安装在服务器上的Excel和有许多请求将创建许多不可接受的Excel进程实例。 第三方库 - 这些都是免费的吗?
  2. 将excel处理移至独立进程。以其他格式交换数据为XML。
  3. 使用某种智能处理来控制在进程中打开和关闭的OLEDB数量。

有什么想法?

+0

尝试使用OpenXML SDK来读取XLSX文件。 – ShamilS 2012-11-20 14:39:08

2

我有同样的问题。仅在IIS中回收应用程序池对我很有帮助。

+0

你以某种方式解决了吗? – 2016-04-21 08:38:01

+0

也为我工作!谢谢! – 2016-06-03 18:36:39