2010-10-29 11 views
6

Dopo diverse ore (~ 6 ore Win7 64 bit, ~ 24 ore WinXP) di esecuzione dell'applicazione desktop multithread (.NET Framework 3.5 SP1 WinForms) utilizzando i file .mdb come backend sto ottenendo il seguente errore di runtime:System.Data.OleDb.OleDbConnectionInternal..ctor: Errore non specificato

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)

sembra che questo è un bug OleDbProvider.

Hai visto/sperimentato qualcosa del genere?

Contesto:

(1) io uso esclusivamente

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

cnn.Open();

...

}

(2) I utilizzare in clausola in alcuni selezionati espressioni SQL per puntare a tabelle MDB esterni.

Suppongo che i problemi siano causati dal caso (2). Anche se è ancora qui un'ipotesi da verificare (alcune correzioni di codice sono necessarie nel codice core della mia applicazione, e credo che ora varrà la pena aggiustarlo, o dovrei passare al backend MS SQL.)

Grazie tu.

+0

Molto probabilmente l'eccezione sta accadendo alla chiamata Open(), quindi ricontrolla la stringa di connessione, le credenziali del database ecc. –

+0

Errore non specificato. Deve essere il messaggio di errore più utile esistente. –

+0

@Malta Dalal: Se il problema si verifica dopo diverse ore, di sicuro non si tratta delle stringhe di connessione e delle credenziali del database.Ho lo stesso problema e sono anche ansioso di trovare una soluzione. – Allie

risposta

1

Ho scritto un'applicazione di test di esempio - il problema è causato da un errore da qualche parte all'interno di .NET System.Data.OleDb.

soluzione

prova VS2008 SP1 è pubblicato qui: System.Data.OleDb bug demonstration sample.

+0

Anche se non è stata utilizzata alcuna clausola IN (o tabelle collegate), l'applicazione di esempio OleDb che ho scritto qui ha esito negativo dopo circa 70.000 connessioni creazioni/distruzioni - TestConnection.ERROR: Errore non specificato - 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 ore ... – ShamilS

3

C'era qualche progresso nel trovare la soluzione per questo problema o più stabe soluzione alternativa?

Ho un problema simile nell'applicazione ASP.NET con la lettura del file Excel. È visibile solo nell'ambiente di produzione in cui molti utenti tentano di elaborare file XLS diversi sul lato server. Dopo aver riciclato il servizio IIS di notte ci sono circa ~ 200 richieste (per aprire Excel) che bloccano il motore JET. Il problema è che tutti i successivi tentativi falliscono, quindi la logica dei tentativi non sarebbe di grande aiuto. Solo il reset di IIS guarisce il problema.

Dall'indagine che ho fatto ci sono diverse opzioni da prendere:

  1. Passa a altra libreria per leggere i file XLS: automazione OLE Excel - richiede Excel per essere installato sul server e avendo molte richieste sarebbe creare molte istanze del processo di Excel che non è accettabile. Libreria di terze parti: qualcuna di queste è gratuita?
  2. Sposta l'elaborazione excel per separare il processo. Scambia dati con un altro formato come XML.
  3. Utilizzare una sorta di gestione intelligente per controllare il numero di OLEDB aperto e si chiude in corso nel processo.

Qualche idea?

+0

Prova OpenXML SDK per leggere i file XLSX. – ShamilS

2

Ho avuto lo stesso problema. Recyling solo il pool di applicazioni in IIS ha funzionato per me.

+0

Hai risolto in qualche modo? –

+0

Ha funzionato anche per me! Grazie! –

Problemi correlati