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

Preguntas similare

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




Respuesta Responder a este mensaje
#2 Javier Carvajal
13/09/2005 - 09:53 | Informe spam
Me da el mismo error que cuando intento pasarlos modificando los valores de
las pestañas Variables globales del paquete interno y Variables globales del
paquete interno (en la tarea ejecutar paquete DTS):

Error en el enlace de parámetros de origen. Compruebe que la especificación
de InputGlobalVariableNames coincide con la consulta. (Microsoft OLE DB
Provider for SQL Server (80040e21): La operación de múltiples pasos de OLE
DB generó errores. Compruebe los valores de estado de OLE DB si es posible.
No se realizó ningún trabajo.)

La variable se llama igual en todos los paquetes, y tengo una que se llama
igual en el paquete exterior (el que ejecuta a los demás). He probado a
cambiarle el nombre a la del paquete exterior por si se liaba al tener el
mismo nombre, pero tampoco funciona.


Javier Carvajal
MCP - SQL Server 2000

"Alejandro Mesa" escribió en el mensaje news:
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
Respuesta Responder a este mensaje
#3 Alejandro Mesa
13/09/2005 - 15:45 | Informe spam
Javier,

Como introduces el nombre de la variable en la pestaña "Variables globales
del paquete interno", usas el combo box para seleccionarla o la introduces
manualmente?

Al parecer tienes inconsistencia entre los nombres de las variables globales
de los paquetes internos y los nombres que tienes en la pestaña "Variables
globales del paquete interno". En caso de que los nombres de las variables
incluyan caracteres raros, como espacios por ejemplo, debes encerrar el
nombre de ellas entre doble comillas.

Ejemplo:

var 11 --> "var 11"


AMB

"Javier Carvajal" wrote:

Me da el mismo error que cuando intento pasarlos modificando los valores de
las pestañas Variables globales del paquete interno y Variables globales del
paquete interno (en la tarea ejecutar paquete DTS):

Error en el enlace de parámetros de origen. Compruebe que la especificación
de InputGlobalVariableNames coincide con la consulta. (Microsoft OLE DB
Provider for SQL Server (80040e21): La operación de múltiples pasos de OLE
DB generó errores. Compruebe los valores de estado de OLE DB si es posible.
No se realizó ningún trabajo.)

La variable se llama igual en todos los paquetes, y tengo una que se llama
igual en el paquete exterior (el que ejecuta a los demás). He probado a
cambiarle el nombre a la del paquete exterior por si se liaba al tener el
mismo nombre, pero tampoco funciona.


Javier Carvajal
MCP - SQL Server 2000

"Alejandro Mesa" escribió en el mensaje news:
> 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




Respuesta Responder a este mensaje
#4 Javier Carvajal
13/09/2005 - 16:36 | Informe spam
La selecciono del combo, y no tiene ningún espacio, si no guión bajo _
Y he probado tanto en variables del paquete interno como en variables del
paquete externo, ya que en la primera tienes que asignarle un valor
directamente, no permitiéndote indicar el contenido de una variable global
del paquete que ejecuta el interno.


Javier Carvajal
MCP - SQL Server 2000

"Alejandro Mesa" escribió en el
mensaje news:
Javier,

Como introduces el nombre de la variable en la pestaña "Variables globales
del paquete interno", usas el combo box para seleccionarla o la introduces
manualmente?

Al parecer tienes inconsistencia entre los nombres de las variables


globales
de los paquetes internos y los nombres que tienes en la pestaña "Variables
globales del paquete interno". En caso de que los nombres de las variables
incluyan caracteres raros, como espacios por ejemplo, debes encerrar el
nombre de ellas entre doble comillas.

Ejemplo:

var 11 --> "var 11"


AMB

"Javier Carvajal" wrote:

> Me da el mismo error que cuando intento pasarlos modificando los valores


de
> las pestañas Variables globales del paquete interno y Variables globales


del
> paquete interno (en la tarea ejecutar paquete DTS):
>
> Error en el enlace de parámetros de origen. Compruebe que la


especificación
> de InputGlobalVariableNames coincide con la consulta. (Microsoft OLE DB
> Provider for SQL Server (80040e21): La operación de múltiples pasos de


OLE
> DB generó errores. Compruebe los valores de estado de OLE DB si es


posible.
> No se realizó ningún trabajo.)
>
> La variable se llama igual en todos los paquetes, y tengo una que se


llama
> igual en el paquete exterior (el que ejecuta a los demás). He probado a
> cambiarle el nombre a la del paquete exterior por si se liaba al tener


el
> mismo nombre, pero tampoco funciona.
>
>
> Javier Carvajal
> MCP - SQL Server 2000
>
> "Alejandro Mesa" escribió en el mensaje news:
> > 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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida