6

使用 .mdb 文件作为后端运行多线程(.NET Framework 3.5 SP1 WinForms)桌面应用程序几个小时(~6 小时 Win7 64 位,~24 小时 WinXP)后,我收到以下运行时错误:

异常 ->未指定的错误

堆栈跟踪->

在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection 连接)
在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions 选项, 对象 poolGroupProviderInfo, DbConnectionPool 池, DbConnection owningObject)

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

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

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

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

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

看起来这是一个 OleDbProvider 错误。

你见过/经历过这样的事情吗?

语境:

(1) 我只使用

使用 (OleDbConnection cnn = new OleDbConnection("{{mymdbConnectionStringHere}}")) {

cnn.Open();

...

}

(2) 我确实在某些选择 SQL 表达式中使用 IN 子句来指向外部 MDB 表。

我猜这些问题是由案例(2)引起的。虽然这仍然是一个需要检查的假设(我的应用程序的核心代码中需要一些代码修复,我现在正在考虑是否值得修复,或者我应该更好地切换到 MS SQL 后端。)

谢谢你。

4

3 回答 3

4

在寻找此问题的解决方案或更稳定的解决方法方面是否有任何进展?

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

根据我所做的调查,有几种选择:

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

有什么想法吗?

于 2011-01-14T21:26:58.190 回答
3

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

于 2014-08-12T07:28:26.963 回答
1

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

测试 VS2008 SP1 解决方案在此发布:System.Data.OleDb 错误演示示例。

于 2010-10-29T17:49:23.267 回答