Variables globales entre paquetes DTS

12/09/2005 - 17:29 por Javier Carvajal | Informe spam
Tengo un problema intentando traspasar el valor de variables globales entre
paquetes DTS. Os comento el montaje para ver si podeis darme alguna solución
o idea, porque revisando manuales y páginas web no he conseguido entender
bien el funcionamiento de estas variables:
Tengo varios paquetes DTS que realizan un proceso de carga sobre diversas
tablas distintas, a cada uno de estos paquetes hay que pasarle como
parámetro el periodo de carga. Todos estos paquetes los invoco desde un
único paquete, que de esta forma es el encargado de realizar la carga de
todas las tablas.
Evidentemente mostrar una pantalla de entrada de datos via script para cada
paquete es algo absurdo, puesto que siempre será la misma fecha para todos
los paquetes. Así que mi idea es pedirlo una vez en el paquete "externo" y
que este vaya llamando a los demás paquetes utilizando el valor de dicha
variable global.
No consigo hacerlo funcionar así. He probado modificando las pestañas
Variables globales del paquete interno y externo, pero no lo reconoce y me
da error al intentar modificar los paquetes internos.
Si alguien tiene alguna sugerencia o explicación se lo agradecería.


Javier Carvajal
MCP - SQL Server 2000
 

Leer las respuestas

#1 Alejandro Mesa
12/09/2005 - 20:55 | Informe spam
Javier,

El modelo de objeto de DTS es complicado y tampoco hay muchos ejemplos tanto
en los libros en linea como en el internet.

Supongamos que tenemos dos paquetes dts que queremos ejecutar desde un
tercero, mediante una tarea "Execute Package". En el tercer paquete creamos
tres tareas, una ActiveX Script, una "Execute Package" para ejecutar paquete
1 y otra "Execute Package" para ejecutar paquete 2. Paquete 1 y 2 tienen
ambas una variable global "string" llamada "v1". Entonces en la tarea
"ActiveX Script" puedes referenciar las variables globales de los paquetes
internos mediante:

DTSGlobalVariables.Parent.Tasks(2).CustomTask.GlobalVariables("v1").value =
"zzz"

DTSGlobalVariables.Parent.Tasks(3).CustomTask.GlobalVariables("v1").value =
"www"

fijate que la secuencia de tareas dentro de la colleccion de tareas del
paquete 3 es:

1 - activex script
2 - "Execute Package" paquete 1
3 - "Execute Package" paquete 2

estamos referenciando las tareas por la posicion fisica, pero tambien
podemos referenciarlas por su nombre:

DTSGlobalVariables.Parent.Tasks"DTSTask_DTSExecutePackageTask_1").CustomTask.GlobalVariables("v1").value = "rrr"

DTSGlobalVariables.Parent.Tasks"DTSTask_DTSExecutePackageTask_2").CustomTask.GlobalVariables("v1").value = "sss"

Los nombres son los que sql server les asigno cuando insertamos las tareas
en el paquete 3.


AMB
"Javier Carvajal" wrote:

Tengo un problema intentando traspasar el valor de variables globales entre
paquetes DTS. Os comento el montaje para ver si podeis darme alguna solución
o idea, porque revisando manuales y páginas web no he conseguido entender
bien el funcionamiento de estas variables:
Tengo varios paquetes DTS que realizan un proceso de carga sobre diversas
tablas distintas, a cada uno de estos paquetes hay que pasarle como
parámetro el periodo de carga. Todos estos paquetes los invoco desde un
único paquete, que de esta forma es el encargado de realizar la carga de
todas las tablas.
Evidentemente mostrar una pantalla de entrada de datos via script para cada
paquete es algo absurdo, puesto que siempre será la misma fecha para todos
los paquetes. Así que mi idea es pedirlo una vez en el paquete "externo" y
que este vaya llamando a los demás paquetes utilizando el valor de dicha
variable global.
No consigo hacerlo funcionar así. He probado modificando las pestañas
Variables globales del paquete interno y externo, pero no lo reconoce y me
da error al intentar modificar los paquetes internos.
Si alguien tiene alguna sugerencia o explicación se lo agradecería.


Javier Carvajal
MCP - SQL Server 2000




Preguntas similares