Intento obtener el valor de un procedimiento almacenado en una variable SSIS, y luego pruebo para ver si dos tareas de SSIS pueden funcionar si agregué una expresión. Entonces, por ejemplo, estoy tratando de usar este procedimiento almacenado:
Tal vez incluso estoy configurando las propiedades de la variable SSIS completamente incorrecta, porque tampoco estoy seguro de si estoy haciendo esto de la manera correcta para que el valor de proceso almacenado se importe a una variable SSIS. Por favor, dígame si necesita más capturas de pantalla de cualquier otra cosa.
Aquí está el ejemplo de la tarea:
Y aquí está la captura de pantalla del Editor de restricciones de precedencia:
Y aquí están las propiedades para la primera tarea:
Quiero que avance (o falle) en función de esa condición. Pero cuando lo pruebo, el proceso fluye de la primera tarea a la segunda independientemente, y solo me muestra "100% completado" para la primera tarea y nada sobre si verificó que esta expresión sea verdadera o no. ¿Cómo puedo hacer tal cosa y qué está yendo mal? Tengo una variable en SSIS llamada 'orderCount' para obtener el valor del proceso almacenado.
fuente
@[User::orderCount]
Result Set
página. simple-talk.com/sql/ssis/…@[User::orderCount]<5?(dt_bool)1:(dt_bool)0
. No olvide publicar los resultados en este hilo si es exitoso. GL!Respuestas:
Tienes dos opciones para hacer que esto funcione. Puede usar un Conjunto de resultados únicos o puede usar el parámetro OUTPUT. Actualmente no estás usando ninguno de los dos correctamente.
Parámetro de salida
Su procedimiento almacenado se define como tener un parámetro
@OrderCount
con una dirección deOUTPUT
Si quisieras usar el procedimiento almacenado dentro de una herramienta, SSMS, .NET, lo que sea, se vería algo así
Es válido ejecutar lo anterior sin especificar,
OUTPUT
pero observe el valor de @orderCount. Cambia de 1435 a 0.Lo mismo ocurre cuando está utilizando la tarea Ejecutar SQL dentro de SSIS. Debe especificar que el parámetro está en SALIDA y también especificarlo en la pestaña Asignaciones de parámetros.
También especifique la variable que desea asignar y use la dirección de SALIDA allí. Aquí he mapeado el resultado en una variable SSIS de tipo Int32 llamada
orderCount
Conjunto de resultados únicos
Tiene la primera parte de esta correcta: ha especificado que el conjunto de resultados es Single Row.
Notarás que estoy usando
EXECUTE dbo.TestStoredProcSSVariable ?
ya que debes especificar un valor de entrada o la llamada de proceso se interrumpirá (al menos como lo has definido). Podría haber codificado un valor en lugar de algo?
similar0
Luego, en la pestaña Conjunto de resultados, aquí estoy mapeando la primera columna (ordinal cero) a una variable llamada
orderCountb
Si ejecuta el procedimiento almacenado proporcionado, no obtendrá un valor en orderCountb. ¿Por qué? Porque no está devolviendo nada de la llamada al procedimiento almacenado. Agregué una declaración final dentro del procedimiento almacenado de
Hazlo tu mismo
Puede explorar cualquier enfoque utilizando el siguiente biml. ¿Qué es biml? El lenguaje de marcado de Business Intelligence es el sistema operativo para BI. Lo que le importa es que le permitirá transformar algo de XML en un paquete SSIS. Todo lo que necesita hacer es descargar e instalar el complemento gratuito BIDS Helper
Después de instalar BIDS Helper,
Data Source
a un servidor real yProvider
alinee con su versión SSIS. Mirando su captura de pantalla, probablemente sea SQLNCLI10.1Bimlscript.biml
Disfruta el siguiente paquete SSIS
fuente