2010-10-29 23 views
6

Après plusieurs heures (~ 6 heures Win7 64bits, ~ 24 heures Windows XP) d'exécuter l'application de bureau multi-thread (.NET Framework 3.5 SP1 WinForms) à l'aide des fichiers .mdb comme backend Je reçois l'erreur d'exécution suivante:System.Data.OleDb.OleDbConnectionInternal..ctor: Erreur non spécifiée

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)

Il semble que ce soit un bug OleDbProvider.

Avez-vous vu/vécu quelque chose comme ça?

Contexte:

(1) J'utilise exclusivement

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

cnn.Open();

...

}

(2) J'utilise clause IN dans certaines expressions sélectionnez SQL pour pointer vers des tables MDB externes.

Je suppose que les problèmes sont causés par case (2). Bien que ce soit encore une hypothèse ici pour vérifier (certaines corrections de code sont nécessaires dans le code de base de mon application, et je pense que ça vaudra la peine d'être corrigé, ou je devrais passer au backend MS SQL.)

Merci toi.

+0

Probablement l'exception se passe à l'appel Open(), vérifiez donc votre chaîne de connexion, vos informations d'identification de base de données, etc. –

+0

Erreur non spécifiée. Doit être le message d'erreur le plus utile existant. –

+0

@Mamta Dalal: Si le problème survient après plusieurs heures, c'est sûr que ce n'est pas la chaîne de connexion et les informations d'identification de la base de données.J'ai le même problème et je suis également impatient de trouver une solution. – Allie

Répondre

1

J'ai écrit un exemple d'application de test - le problème est causé par un bug quelque part dans les composants internes de .NET System.Data.OleDb.

test solution VS2008 SP1 est publiée ici: System.Data.OleDb bug demonstration sample.

+0

Même s'il n'y a aucune clause IN utilisée (ou tables liées) alors l'exemple d'application OleDb que j'ai écrit ici échoue après environ 70 000 connexions créations/destructions - TestConnection.ERROR: Erreur non spécifiée - 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 heures ... – ShamilS

3

Y avait-il des progrès dans la recherche de la solution à ce problème ou solution de contournement plus de stabe?

J'ai un problème similaire dans l'application ASP.NET avec la lecture de fichier Excel. Il est uniquement visible dans l'environnement de production où de nombreux utilisateurs tentent de traiter différents fichiers XLS du côté serveur. Après le recyclage du service IIS la nuit, il y a environ ~ 200 demandes (pour ouvrir Excel) qui bloquent le moteur JET. Le problème est que toutes les tentatives suivantes échouent, donc une nouvelle tentative n'aidera pas beaucoup. Seule la réinitialisation d'IIS guérit le problème.

De l'enquête, je l'ai fait il y a plusieurs options à prendre:

  1. Passer à autre bibliothèque pour lire des fichiers XLS: Excel OLE Automation - nécessite Excel pour être installé sur le serveur et ayant de nombreuses demandes seraient créer de nombreuses instances de processus Excel qui ne sont pas acceptables. Bibliothèque tierce - l'une de ces bibliothèques est-elle gratuite?
  2. Déplacer le traitement Excel vers un processus séparé. Échange de données avec un autre format en XML.
  3. Utilisez une sorte de gestion intelligente pour contrôler le nombre d'OLEDB ouvert et ferme en cours dans le processus.

Des pensées?

+0

Essayez OpenXML SDK pour lire les fichiers XLSX. – ShamilS

2

J'ai eu le même problème. Recyling seulement le pool d'applications dans IIS a fonctionné pour moi.

+0

Avez-vous résolu d'une manière ou d'une autre? –

+0

a également travaillé pour moi! Merci! –