none
64 Bits vs 32 Bits RRS feed

  • Pregunta

  • Hola de nuevo. Hace unos días he hecho un SSIS que importa datos de excel a una base de datos, pero tengo sistema operativo de 64 bits, por lo que naturalmente me dio error. En un principio se solucionó cambiando la propiedad de Run64BitRuntime a false. Me ha funcionado bien, pero cuando he intentado levantar el dtsx desde el código de un programa en c# me ha dado el mismo problema de nuevo, y he investigado pero no he logrado encontrar una manera de poder levantar el paquete desde una aplicación como que si fuera de 32 Bits.

    Agradecería una orientación. 

    Muchas gracias.

    P.D: Aquí está el código que utilizo para levantar el paquete.

    Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();

                Package package = null;

                package = app.LoadPackage(@"D:\Trabajo\CONSOLT\Platino\PC\PedidosTemprada\PedidosTemprada\bin\Package.dtsx", null);
     
                //Excute Package 
                Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
     
                if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure)
                {
                    foreach (Microsoft.SqlServer.Dts.Runtime.DtsError local_DtsError in package.Errors)
                    { 
                        MessageBox.Show(local_DtsError.Description.ToString());
                    }
                }

    jueves, 6 de septiembre de 2012 22:32

Respuestas

  • Hola,

    Los paquetes SSIS tiene una propiedad para configurar el runtime, vete a las propiedades del paquete y configura el runtime64bits en falso, de esta forma se ejecutara en 32bits, mira la imagen.

    (La imagen hace referencia a SSIS 2012)

    Tambien hay un tema que habla un poco de este problema.

    http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/5085b4bc-129f-4ce1-b08d-88ed1359c100


    Ahias Portillo

    viernes, 7 de septiembre de 2012 2:37

Todas las respuestas

  • Hola,

    Los paquetes SSIS tiene una propiedad para configurar el runtime, vete a las propiedades del paquete y configura el runtime64bits en falso, de esta forma se ejecutara en 32bits, mira la imagen.

    (La imagen hace referencia a SSIS 2012)

    Tambien hay un tema que habla un poco de este problema.

    http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/5085b4bc-129f-4ce1-b08d-88ed1359c100


    Ahias Portillo

    viernes, 7 de septiembre de 2012 2:37
  • Gracias por la respuesta. Ya he hecho eso anteriormente y en efecto si funciona. El problema es que cuando intento ejecutar el dtsx desde un programa como que ignora la propiedad que se puso en false. Es decir, el dts si corre (por la propiedad puesta a false) pero no cuando se ejecuta desde un programa.

    No se si me explico.

    viernes, 7 de septiembre de 2012 17:17
  • Hola.

    En función del programa que lo invoque tendrás que llamar a la versión de DTExec de 32 o 64 bits. ¿Cómo haces la ejecución y para qué tipo está compilada la aplicación que lo llama?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 7 de septiembre de 2012 18:15
    Moderador
  • Hola,

    Dime porque debe ser llamado el paquete por un programa?????

    Generalmente los paquetes, son instalados en el motor de Integration Services y configurados para su ejecusicion en Sql Server Agent, en el Agent de Sql, cuando configuras el step en el job, debes especificar que step debe ejecutarse en modo de 32 bits eso lo configuras en la option Execute option. Recuerda que un Job puede ser configurado para ejecutarse infinitamente (cada segundo,minuto, hora, dia) todo dependera de las necesidades, pero recuerda que los tiempos entre ejecusion deben ser acorde a los tiempos de procesamiento del ETL, porque si tu proceso tarda 5 minutos no deberias configurar menos tiempo entre ejecusiones.

    Pero si necesitas ejecutar el paquete desde la aplicacion lee  el siguiente link (Utilidad dtexec  Herramienta de SSIS=http://msdn.microsoft.com/es-es/library/ms162810%28v=sql.105%29.aspx)

    Consideraciones sobre la instalación de dtexec (Herramienta de SSIS) en equipos de 64 bits En un equipo de 64 bits, Integration Services instala una versión de 64 bits de la utilidad dtexec (dtexec.exe).

    Si tiene que ejecutar ciertos paquetes en modo de 32 bits, tendrá que instalar la versión de 32 bits de la utilidad dtexec.

    Para instalar la versión de 32 bits de la utilidad dtexec, debe seleccionar Herramientas cliente o

    Business Intelligence Development Studio durante la instalación. De forma predeterminada, si un equipo de 64 bits tiene instaladas tanto las versiones de 64 bits como las de 32 bits de

    una utilidad de líneas de comandos de Integration Services, ejecutará la versión de 32 bits en el símbolo del sistema.

    La versión de 32 bits se ejecuta porque la ruta de acceso del directorio para la versión de 32 bits aparece en la variable

    de entorno PATH antes que la ruta de acceso del directorio para la versión de 64 bits. (Normalmente, la ruta de acceso

    del directorio de 32 bits es <unidad>:\Archivos de programa(x86)\Microsoft SQL Server\100\DTS\Binn, mientras que la ruta

    de acceso del directorio de 64 bits es <unidad>:\Archivos de programa\Microsoft SQL Server\100\DTS\Binn.)



    Ahias Portillo

    sábado, 8 de septiembre de 2012 13:39
  • Hola.

    ¿Resolviste el problema? ¿Nos pasas la información requerida?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    sábado, 22 de septiembre de 2012 9:39
    Moderador