2010-10-29 27 views
6

Después de varias horas (~ 6 horas Win7 64bit, ~ 24 horas WinXP) de ejecutar aplicaciones de escritorio de múltiples hilos (.NET Framework 3.5 SP1 WinForms) usando archivos .mdb como backend Obtengo el siguiente error de tiempo de ejecución:System.Data.OleDb.OleDbConnectionInternal..ctor: Error no especificado

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)

Parece que se trata de un error OleDbProvider.

¿Has visto/experimentado algo así?

Contexto:

(1) yo uso exclusivamente

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

cnn.Open();

...

}

(2) que hago uso en la cláusula en algunos selectos expresiones SQL para apuntar a las tablas MDB externos.

Supongo que los problemas son causados ​​por el caso (2). Aunque todavía hay una hipótesis aquí para comprobar (se necesitan algunas correcciones de código en el código central de mi aplicación, y considero que valdrá la pena repararlo, o mejor cambiar a MS SQL back-end.)

Gracias tú.

+0

Lo más probable es que la excepción ocurra en la llamada a Open(), así que revise su cadena de conexión, credenciales de base de datos, etc. –

+0

Error no especificado .. Tiene que ser el mensaje de error más útil que existe. –

+0

@Mamta Dalal: si el problema ocurre después de varias horas, seguramente no es la cadena de conexión y las credenciales de la base de datos.Tengo el mismo problema, y ​​también estoy ansioso por encontrar una solución. – Allie

Respuesta

1

He escrito una solicitud de prueba de prueba: el problema se debe a un error en el interior de .NET System.Data.OleDb. Solución

prueba VS2008 SP1 se publica en: System.Data.OleDb bug demonstration sample.

+0

Incluso si no hay ninguna cláusula IN utilizada (o tablas vinculadas), entonces la aplicación de muestra OleDb que he escrito aquí falla después de aproximadamente 70,000 conexiones creaciones/destrucciones - TestConnection.ERROR: Error no especificado - 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 hours ... – ShamilS

3

Hubo algún avance en enterarse de la solución para este asunto o más solución Stabe?

Tengo un problema similar en la aplicación ASP.NET con la lectura de archivos de Excel. Solo es visible en el entorno de producción donde muchos usuarios intentan procesar diferentes archivos XLS en el lado del servidor. Después de reciclar el servicio IIS por la noche, hay alrededor de ~ 200 solicitudes (para abrir Excel) que bloquean el motor JET. El problema es que todos los intentos posteriores fallan, por lo que la lógica de reintento no ayudaría mucho. Solo el reinicio de IIS soluciona el problema.

De la investigación que he hecho hay varias opciones para tomar:

  1. Cambiar a otra biblioteca para leer archivos XLS: Excel automatización OLE - requiere Excel para ser instalado en el servidor y tener muchas solicitudes haría crea muchas instancias de proceso de Excel que no son aceptables. Biblioteca de terceros - ¿Alguno de estos es gratis?
  2. Mueva el procesamiento de Excel a un proceso separado. Intercambie datos con algún otro formato como XML.
  3. Utilice algún tipo de manejo inteligente para controlar el número de aperturas y cierres de OLEDB en curso en el proceso.

¿Alguna idea?

+0

Pruebe OpenXML SDK para leer archivos XLSX. – ShamilS

2

Tuve el mismo problema. Reciclar solo el grupo de aplicaciones en IIS funcionó para mí.

+0

¿Has resuelto de alguna manera? –

+0

¡También funcionó para mí! ¡Gracias! –

Cuestiones relacionadas