locked
Job SQL Server 2005 cargar datos de una hoja de excel RRS feed

  • Pregunta

  • Hola buen dia:

    Estoy tratando de crear un Job, con el cual se requiere cargar de una hoja electronica los datos a una tabla en Sql Server 2005.

    Si ejecuto el paquete desde Integration Services el cargue se efectua correctamente, pero si ejecuto el job genera el siguiente error : Ejecutado como usuario: SVR-INTRANET\SYSTEM. Los parámetros de línea de comandos no son válidos.  Error en el paso.

    Y lo estoy creado y ejecutando desde el usuario dba.


    Su configuracion en la solapa Pasos esta dada asi:

    1. Tipo: paquete sql server integration services
    2. Origenes de datos : lo he puesto de estas dos formas
         a) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Z:\Despachos.xls";Extended Properties="EXCEL 8.0;HDR=YES";
         b) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Mis archivos\Usuarios\Despachos\Despachos.xls";Extended Properties="EXCEL 8.0;HDR=YES";
         c) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="\Despachos\Despachos.xls";Extended Properties="EXCEL 8.0;HDR=YES";

    De antemano agradezco la atencion brindada.

    Gloria Marin
    Colombia


    Gema
    lunes, 13 de abril de 2009 14:25

Respuestas

  • Hola Gloria, si me refiero a que agregues un archivo de configuracion al paquete, esto lo logras dando click derecho sobre tu diseñador de paquetes mas exactamente sobre la pestaña de Control Flow y alli seleccionas la opcion Package Configuration, esto te lanza una pantalla donde debes habilitar la opcion Enable Package Configurations y seguido presionas el boton Add, esta accion lanza un Asistente que te guiara en la creacion del archivo de configuracion, en el primer paso seleccionas el el type la opcion XML configuration file y especificas la ruta donde quieres almacenar este archivo, para que despues lo abras y edites sus propiedades, al dar siguiente aparecen todos los objetos de tu paquete incluyendo las connecciones que en el existen, debes seleccionar de la conexion excel que usas la propiedad ExcelFilePath, luego siguiente y luego finalizar (Todas las propiedades que selecciones seran las que quedaran incluidas en el archivo de configuracion).

    Si revisas el archivo de configuracion alli apareceria la propiedad ExcelFilePath de tu conexion Excel para que la configures con la ruta deseada y al guardar este archivo en el momento de ejecutar el paquete este sera el origen que el tomara, de esta manera no debes configurar en los steps de tu job la pestaña de datasource, ya que siempre lo leeria del archivo de configuracion que creaste.

    Espero te sea de ayuda.

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    martes, 14 de abril de 2009 15:37

Todas las respuestas

  • Hola.

    Si tu servidor de base de datos es de 64bits, tendrás que utilizar el ejecutable de 32bits de SSIS para lanzar este job, lanzándolo desde un comando (dtexec) y no como tipo Integration Services. La mayor parte de los parámetros los puedes ver haciendo uso del propio interfaz del job (pestaña "Command Line"). Si es este tu caso, nos dices.

    Alberto López Grande.
    lunes, 13 de abril de 2009 14:44
    Moderador
  • Hola Gloria segun entiendo tienes el paquete ya listo y cuando vas a crear una tarea programada para que se ejecute automaticamente, configuras diferentes origenes de datos para el mismo verdad. Si es asi te recomendaria crear un archivo de configuracion para el paquete donde puedas parametrizar facilmente los origenes de datos que utilizarias en la ejecucion del mismo, y asi en el momento de crear el job no le pongas los datasources a nivel de pasos si no en el archivo de configuracion como tal.

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    lunes, 13 de abril de 2009 17:05

  • Carlos Andres:

    Cuando digo :

    2. Origenes de datos : lo he puesto de estas dos formas
         a) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Z:\Despachos.xls";Extended Properties="EXCEL 8.0;HDR=YES";
         b) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Mis archivos\Usuarios\Despachos\Despachos.xls";Extended   
             Properties="EXCEL 8.0;HDR=YES";
         c) Provider=Microsoft.Jet.OLEDB.4.0;Data Source="\Despachos\Despachos.xls";Extended Properties="EXCEL 8.0;HDR=YES";

    Me refiero que solo he configurado uno de estos tres para asi probar cual podria funcionar.


    Gloria


    Gema
    lunes, 13 de abril de 2009 19:48
  • Entiendo tu escenario Gloria, de igual maneja porque no tratas de crear un archivo de configuracion para tu paquete donde puedas alterar el origen de datos excel que utilizas en el mismo, modificando dicho archivo en vez de parametrizar el origen a traves del job.

    Ten en cuenta que un origen excel en integration services  para que sea dinamico no modificas la propiedad ConnectionString, si no que debes modificar su propiedad ExcelFilePath, si te fijas en el paso del job solo aparece la columna con el connection string en la pestaña data source.

    Saludos


    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    lunes, 13 de abril de 2009 20:26
  • Debes tener en cuenta al momento de ubicar el arhcivo de Excel en alguna ruta (disco local, carpeta compartida) que el usuario que trata de abrir el documento es el usuario que ejecuta el setrvicio SQL Agent en donde esta corriendo el JOB.  

    A no ser que configures el JOB para que ejecute con un proxi que tenga asociado un usuario con privilegios necesarios.

    Saludos


    Rafael Morales

    martes, 14 de abril de 2009 1:38
  • Hola Andres:

    Cuando dices : "crear un archivo de configuracion para tu paquete donde puedas alterar el origen de datos excel que utilizas en el mismo"

    Te pregunto :

    1) Crear el archivo de configuracion desde SSIS

    2) Como crearia el archivo de configuracion desde el SSIS

     

    Gracias

    Gloria Marin

    Colombia


    Gema
    martes, 14 de abril de 2009 15:15
  • Hola Gloria, si me refiero a que agregues un archivo de configuracion al paquete, esto lo logras dando click derecho sobre tu diseñador de paquetes mas exactamente sobre la pestaña de Control Flow y alli seleccionas la opcion Package Configuration, esto te lanza una pantalla donde debes habilitar la opcion Enable Package Configurations y seguido presionas el boton Add, esta accion lanza un Asistente que te guiara en la creacion del archivo de configuracion, en el primer paso seleccionas el el type la opcion XML configuration file y especificas la ruta donde quieres almacenar este archivo, para que despues lo abras y edites sus propiedades, al dar siguiente aparecen todos los objetos de tu paquete incluyendo las connecciones que en el existen, debes seleccionar de la conexion excel que usas la propiedad ExcelFilePath, luego siguiente y luego finalizar (Todas las propiedades que selecciones seran las que quedaran incluidas en el archivo de configuracion).

    Si revisas el archivo de configuracion alli apareceria la propiedad ExcelFilePath de tu conexion Excel para que la configures con la ruta deseada y al guardar este archivo en el momento de ejecutar el paquete este sera el origen que el tomara, de esta manera no debes configurar en los steps de tu job la pestaña de datasource, ya que siempre lo leeria del archivo de configuracion que creaste.

    Espero te sea de ayuda.

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    martes, 14 de abril de 2009 15:37


  • Hola Andres, cuando dices " ... debes seleccionar de la conexion excel que usas la propiedad ExcelFilePath ... "


    Sucede que mi origen de datos que traer los datos de la hoja de excel , tiene esta cadena de conexion:

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\SVR-INTRANET\Despachos\Despachos.xls;Extended Properties="EXCEL 8.0;HDR=YES"

    Por ningun lado tiene ExcelFilePath

    He tratado de crear otros Origenes de datos u otras Conexiones pero ninguna se crea con la linea ExcelFilePath

    Me podrias orientar que debo hacer por favor.


    Gracias

    Gloria Marin
    Colombia


    Gema
    martes, 14 de abril de 2009 16:20

  • Gloria olvidate por un momento de la cadena de conexion si te fijas por ningun lado la nombre en la respuesta anterior, si tu origen de datos es de tipo ExcelFile y deseas ver la propiedad ExcelFilePath que tanto te he nombrado, puedes encontrarlo en la ventana de propiedades cuando te posicionas en el panel Connection Managers sobre la dicha Conexion Excel.

    Adjunto la imagen de la ventana donde seleccionas las propiedades que te muestra el asistente para la creacion de archivos de configuracion de SSIS donde puedes ver que selecciono la propiedad ExcelFilePath del archivo Excel para que sea puesta en el archivo de configuracion. (Esta propiedad es la que debes seleccionar para que sea contenida en el archivo)



    Sigue los pasos que te di en la respuesta anterior para crear el archivo de configuracion y me cuentas como te fue

    Saludos
    Andrés González MCITP | Business Intelligence Developer - MCPD | Web Developer http://www.intermezzo-bi.com
    martes, 14 de abril de 2009 16:57
  • Hola Carlos Andres:

    He seguido tus pasos y me ha creado el archivo de configuracion al paquete asi:


    - <DTSConfiguration> - <DTSConfigurationHeading> <DTSConfigurationFileInfo GeneratedBy="GENFAR\Administrador" GeneratedFromPackageName="Datos_de_ Excel" GeneratedFromPackageID="{2367744D-107E-4C8B-9219-8FA420158866}" GeneratedDate="27/04/2009 09:23:16 a.m." /> </DTSConfigurationHeading> - <Configuration ConfiguredType="Property" Path="\Package.Connections[Administrador de conexión con Excel].Properties[ExcelFilePath]" ValueType="String"> <ConfiguredValue>V:\Copia de Despachos.xls</ConfiguredValue> </Configuration> </DTSConfiguration>


    Donde <ConfiguredValue>V:\Copia de Despachos.xls</ConfiguredValue>  es la ruta del archivo de excel que requiero cargar a SQL por medio de un JOB.

    Hice el deployment y seguidamente instale el paquete en SQL SERVER.

    Ahora al crear el JOB, segun tus instrucciones " ... de esta manera no debes configurar en los steps de tu job la pestaña de datasource "

    No la configure como dices pero al ejecutar el job sigue saliendo error :(

    Muchas gracias de antemano por la atencion.

    Gloria
    Colombia


    Gema
    lunes, 27 de abril de 2009 14:59
  • Carlos Andres

    Favor me puedes informar como anexo un archivo donde te detallo mi caso con diapositivas

    Gracias

    Gloria

    Colombia


    Gema
    lunes, 27 de abril de 2009 15:39
  • Hola Gloria, este error se suele presentar (es posible que sea el caso ) cuando el sql agent  (2005 a mas)es de  32 bits y esta montado sobre un sistema operativo de 64 bits (win 2003 x ejemplo).

    Este error se da cuando el paquete que hemos creado contiene ejecuciones sobre archivos (xls,mdb, etc).

    Es decir el sql agente esta intentando ejecutar el paquete dtsx  como 32 bits y siempre  arrojara error por estar bajo un S.O. de 64, a pesar que en SSIS se ejecute correctamente

    La solución es un poco larga pero es efectiva

    1. Crer a credenciales  el cual deba contener los permisos del usurio que ejecuta o creo el paquete, lo mas recomendable que sea el administrador.Crar un usuario proxy  que instancie a la credencial creada en el paso 1
    2. En el SSIS dalre porteción de nivel de sesitivo con password
    3. Crear el job y considera en la pagina PASOS -> GENERAL  que este paso sea de tipo  sistema operatico (cmdexec) y ejecutado como el usario proxy que se creo en el paso 2
    4. En el area de comando (textarea)  se debe indicar que se utilice el utilitario  de ejecución (de tipo de 32 bits) DTExec.exe, por lo general este archivo se ubica en C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\. y el paquete a ejecutar. A modo de ejemplo seria asi:

    "D:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe" /FILE "E:\PROY_BI\CARGAS_DBCALLCENTER\NEXTEL_CAMPAÑA\CARGA CAMPAÑA NEXTEL\CARGA CAMPAÑA NEXTEL\bin\Package.dtsx" /DECRYPT 123456 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF

    Y listo.

    Espero que esto les sea de utilidad.

    Saludos

    Victor Vernaza

    http://twitter.com/AVERNAZ

    • Propuesto como respuesta avernaz viernes, 23 de abril de 2010 21:27
    viernes, 23 de abril de 2010 21:26