Pregunta

Tengo un paquete SSIS que lee un archivo de Excel (fuente de flujo de datos) y transfiere los datos a SQL Server utilizando el elemento de flujo de datos de destino OLEDB. Este paquete lo ejecuta la aplicación .Net utilizando el modelo de objetos SSIS.El paquete almacenado en un sistema de archivos dentro de la subcarpeta de la aplicación.

El paquete funciona bien en mi máquina de desarrollo/prueba. Ambas máquinas tienen win2k3 de 32 bits.El SSIS se construyó en el entorno BIDS de 32 bits.

Cuando implemento esta aplicación en una máquina de producción que tiene la edición estándar win2k3 x64, aparece el error

Se ha producido un error de OLE DB.Código de error:0x80040154.Hay un registro OLE DB disponible.Fuente:"Componentes del servicio Microsoft OLE DB" Resultado:0x80040154 Descripción:"Clase no registrada".La llamada al método AcquireConnection al administrador de conexiones "Excel Connection Manager" falló con el código de error 0xC0202009.El componente "Fuente de Excel" (630) falló en la validación y devolvió el código de error 0xC020801C.

He leído en otras publicaciones que configurar la propiedad Run64BitRuntime del proyecto (durante el tiempo de diseño) resuelve el problema al ejecutarlo desde BIDS.

¿Cómo configuro esta propiedad a través del modelo de objetos SSIS?

Aquí está la parte del código que ejecuta el paquete.

   _application = New Application()
   _package = New Package()
   _package = _application.LoadPackage(packageName, Nothing)
   _updateResult = _package.Execute()

Gracias

Masood

¿Fue útil?

Solución

La propiedad Run64BitRuntime solo se aplica al paquete que se ejecuta dentro de BIDS.No es necesario establecer esta propiedad cuando se ejecuta fuera de BIDS.

Creo que su problema es que cuando se ejecuta en código, el paquete se ejecuta en modo de 64 bits; sin embargo, Excel no lo admite.Para que esto funcione, deberá desembolsar el dinero para iniciar la versión de 32 bits de DTExec.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top