System.Data.OleDb.OleDbConnectionInternal..ctor: неопределенная ошибка - PullRequest
6 голосов
/ 29 октября 2010

После нескольких часов (~ 6 часов Win7 64bit, ~ 24 часа WinXP) запуска многопоточного (.NET Framework 3.5 SP1 WinForms) настольного приложения с использованием файлов .mdb в качестве бэкэнда я получаю следующую ошибку времени выполнения:

Исключение -> Неуказанная ошибка

StackTrace ->

в System.Data.OleDb.OleDbConnectionInternal..ctor (OleDbConnectionString constr, соединение OleDbConnection)
в System.Data.OleDb.OleDbConnectionFactory.CreateConnection (DbConnectionOptions параметры, объект poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)

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

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

в System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnectionFactory ConnectionFactory)

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

в NetworkManager.SearchInputFileHandler.GetInputRows (SearchProgramTypeEnumeration programType, Int32 startRowNum, Int32 rowQty, Boolean setupInProgress, Булевский фильтр OutTuninitializedRows

Похоже, что это ошибка OleDbProvider.

Вы видели / испытывали что-то подобное?

Контекст:

(1) Я исключительно использую

использование (OleDbConnection cnn = new OleDbConnection ("{{mymdbConnectionStringHere}}")) {

* +1034 * cnn.Open ();

...

}

(2) Я использую предложение IN в некоторых выражениях SQL для указания на внешние таблицы MDB.

Я полагаю, что проблема вызвана случаем (2) Хотя это все еще гипотеза для проверки (некоторые исправления кода необходимы в основном коде моего приложения, и сейчас я думаю, стоит ли это исправлять, или мне лучше перейти на бэкэнд MS SQL.)

Спасибо.

Ответы [ 3 ]

3 голосов
/ 15 января 2011

Был ли какой-либо прогресс в поиске решения этой проблемы или более точного решения?

У меня похожая проблема в приложении ASP.NET с чтением файла Excel.Это видно только в производственной среде, где многие пользователи пытаются обрабатывать различные файлы XLS на стороне сервера.После утилизации службы IIS в ночное время появляется около 200 запросов (чтобы открыть Excel), которые вешают движок JET.Проблема в том, что все последующие попытки терпят неудачу, поэтому повторная логика не сильно поможет.Только сброс IIS устраняет проблему.

Из проведенного мною исследования можно выбрать несколько вариантов:

  1. Переключиться на другую библиотеку для чтения файлов XLS: Excel OLE Automation - требуетсяExcel, установленный на сервере и имеющий много запросов, создаст много экземпляров процесса Excel, что неприемлемо.Сторонняя библиотека - есть ли что-нибудь из этого бесплатного?
  2. Перенос обработки в Excel в отдельный процесс.Обмен данными с другим форматом, таким как XML.
  3. Используйте некоторую интеллектуальную обработку для управления количеством открытий OLEDB, происходящих в процессе.

Есть мысли?

2 голосов
/ 12 августа 2014

У меня была такая же проблема.Утилизация только пула приложений в IIS работала для меня.

1 голос
/ 29 октября 2010

Я написал пример тестового приложения - проблема вызвана ошибкой где-то во внутренних частях .NET System.Data.OleDb.

Тестовое решение VS2008 SP1 опубликовано здесь: System.DataПример демонстрации ошибки .OleDb.

...