sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué falla mi conexión ODBC cuando se ejecuta una carga SSIS en Visual Studio, pero no cuando se ejecuta el mismo paquete con la utilidad Ejecutar paquete?

Haciendo algunas suposiciones aquí, pero voy a suponer que este es un problema de 32 vs 64 bits. Para verificar, pruebe estos dos comandos desde un símbolo del sistema (Tecla de Windows, R, cmd.exe o Inicio, Ejecutar, cmd.exe)

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
"C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx

El primero ejecutará su paquete en modo de 32 bits mientras que el segundo lo ejecutará en modo de 64 bits. Esto será importante ya que sus controladores y cualquier DSN que haya creado solo serán visibles en el mundo de 32/64 bits.

Reparación de SSDT

Una vez que haya identificado cuál necesita, probablemente la versión de 32 bits, deberá asegurarse de que su proyecto esté utilizando el tiempo de ejecución adecuado. Haga clic derecho en su proyecto y seleccione Propiedades y luego navegue a la pestaña Depuración debajo de Propiedades de configuración.

Después de invertir el valor Run64BitRuntime, asumo que su paquete funcionará desde SSDT.

Reparación del Agente SQL

Tendrá que editar el trabajo del Agente SQL existente para cambiar el bittedness del paso del trabajo. Esto estará en la pestaña Configuración y luego en la pestaña Avanzado. Marque/Desmarque el tiempo de ejecución de 32 bits.

Mentiras y engaños

La gente observadora puede ver que dtexec ofrece un /X86 opción. No lo creas. La única forma de obtener el bit-ness correcto es llamar explícitamente al dtexec.exe correcto. La documentación incluso lo dice, pero nadie lee la documentación.

Esta opción solo la utiliza el Agente SQL Server. Esta opción se ignora si ejecuta la utilidad dtexec en el símbolo del sistema.