Saltar al contenido

¿Cómo modificar la variable en SSIS?

La guía paso a paso o código que hallarás en este artículo es la solución más eficiente y válida que encontramos a esta inquietud o dilema.

Solución:

Como @Yuck y @devarc han notado, hay dos valores diferentes y distintos que tiene una Variable. El valor de tiempo de diseño es el valor que asigna cuando se crea la variable por primera vez. En su caso, la variable contiene C:Test.txt como valor en tiempo de diseño. Cada vez que abra el paquete, mostrará C:Test.txt hasta que lo cambie en el

Archivo actual

Para hacer que el valor de una variable cambie mientras el paquete se está ejecutando, sus opciones son establecer el valor o calcularlo. Aquí he creado una variable de nivel de paquete CurrentFile con el valor de C:Test.txt

Una cosa que a menudo hace tropezar a las personas es que han cambiado correctamente el valor de tiempo de ejecución, pero cuando lo ejecutan en BIDS, ven el valor “antiguo”. El valor que se muestra en la ventana Variables no cambia durante la ejecución del paquete.

ingrese la descripción de la imagen aquí

Durante la ejecución del paquete, mi ventana Variables todavía muestra el valor de tiempo de diseño (C:Test.txt) pero el true el valor se refleja en la ventana Locales (C:Test2.txt)

Establecer un valor

El valor de casi todo en SSIS se puede establecer en tiempo de ejecución a través de un conjunto de opciones detalladas de línea de comandos o mediante fuentes de configuración. La mayor diferencia en mi opinión es que este enfoque es que el valor siempre será el valor durante toda la vida útil de la ejecución del paquete. Las invocaciones secuenciales o paralelas de un paquete pueden cambiar ese valor pero para que ejecución el valor permanecería constante (salvo una modificación explícita del valor.

/COLOCAR

La ejecución de la línea de comandos (dtexec.exe), hacer clic con el botón derecho en un paquete y ejecutarlo desde el sistema de archivos (dtexecUI.exe) o crear un paso de trabajo del Agente SQL de SQL Server Integration Services permiten proporcionar un valor de tiempo de ejecución a través del comando SET . Usando la variable anterior, el siguiente comando establecería el valor de tiempo de ejecución en C:Test2.txt

dtexec /file C:Generated.dtsx /set Package.Variables[User::CurrentFile].Properties[Value];"C:Test2.txt"

Configuración

SSIS ofrece una opción para crear orígenes de configuración para proporcionar valores de tiempo de ejecución a los paquetes. El artículo al que vinculé anteriormente hace un trabajo mucho mejor al describir los pros y los contras de las opciones de configuración que el que haré aquí. Diré que normalmente uso ambos: mi comando SET configura un administrador de conexión que luego usa el paquete para encontrar el conjunto “completo” de configuraciones de paquetes.

Calcular un valor

Hay una variedad de tareas en SSIS que pueden cambiar el valor de una variable, así como el uso de Expresiones para cambiar un valor. Veo esto como cosas que operan sobre el valor mientras el paquete está en vuelo.

Tareas

Una tarea de secuencia de comandos es uno de los mecanismos más utilizados para quienes comienzan, pero encuentro otras herramientas en el kit de herramientas de SSIS que suelen ser más adecuadas para cambiar los valores de las variables.

Foreach Loop Container y Execute SQL Task son dos de las otras grandes tareas que debe buscar para la asignación de un valor variable.

Expresiones

Las expresiones son el dulce más glorioso en la caja de herramientas de SSIS. La mayoría de las “cosas” en SSIS exponen propiedades para la configuración. Eso es útil, pero usar la asignación de una expresión para construir esas propiedades es excelente.

Por ejemplo, imagina 3 variables RootFolder, FileName y ComputedCurrentFile con valores de C:, File2.txt y vacío string. En la ventana Propiedades de ComputedCurrentFile cambiaríamos el valor de EvaluateAsExpression de False a True y luego usaríamos una expresión como @[User::RootFolder]+ "\" [email protected][User::FileName] Eso simplemente concatena el valor de las dos primeras variables juntas. Esto puede resultar útil si el nombre del archivo para el procesamiento era estándar pero la carpeta de origen cambiaba con frecuencia. O si estamos hablando de salida, es común usar expresiones para crear un nombre de archivo de salida usando la fecha y posiblemente la hora en que se ejecuta el paquete.

Finalmente, no hay nada que impida una mezcla y combinación de estos enfoques. Por lo general, uso una configuración para señalar un enumerador de archivos en la carpeta de inicio correcta y luego uso valores calculados para identificar el archivo actual para su procesamiento.

Si desea cambiarlo en el diseñador, simplemente haga clic con el botón derecho en el espacio libre y –> Variables.

Pero si desea cambiarlo en tiempo de ejecución, le sugiero que:

  1. crear tarea de script
  2. elige lengua
  3. agregue su variable a ReadWriteVariables.
  4. Editar guión.
  5. Por ejemplo en VB:

    Dts.Variables(“miVariable”).Valor = @”C:Prueba2.txt”;

    Dts.TaskResult = ScriptResults.Éxito

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *