Uso de Variables Globales (DTS SQL Server 2000)

Algo muy importante y potente que tenemos dentro de los DTS de SQL 2000 es el uso de variable globales, por ejemplo podemos tener el problema de querer traer registros a una tabla a partir de una fecha en particular o un cálculo específico, si el sistema del que extraemos datos y a la BD en la que insertamos esos datos están en SQL Server, no es demasiado problema porque podemos aplicar esos filtros con subconsultas, pero qué sucede cuando el sistema origen se encuentra en Oracle o Sybase, o cualquier motor distinto de SQL Server, con una simple subconsulta no podemos lograrlo, debemos utilizar si o si variables globales. ¿Porqué son globales? Porque al contrario de las variables que definimos dentro de un store procedure con la sentencia declare nombre as tipoDeDato  y les asignamos un valor con una sentencia por ejemplo así:

SELECT @variable1 = fecha  FROM Tabla

Las variables globales las generamos con las “Tareas de Ejecución de SQL”

imagen1.jpg

Dentro de esa tarea seleccionamos una conexión que puede ser a cualquier motor de BD (previamente creada obviamente), y escribimos nuestro SQL del dato que queremos traer.

imagen2.jpg

Luego hacemos clic en el botón “Parámetros” y tenemos dos solapas, una que dice “Parámetros de Entrada” y “Parámetros de Salida”, como nosotros en este caso queremos generar un parámetro o variable de salida seleccionamos la segunda solapa.

imagen3.jpg

Como el resultado que obtenemos de la consulta es un solo registro, seleccionamos “Valor de Fila”, si lo que obtenemos es un conjunto de filas (Recordset para los familiarizados con Visual Basic) seleccionamos “Conjunto de Filas”, y hacemos clic en “Crear Variables Globales”

Una vez creada la variable, asignamos al parámetro (nombre de columna resultado de query generada previamente) la variable global que hemos creado, hasta aquí está creada y cuando se ejecute el DTS se llenará con el resultado de esa query, ahora falta saber cómo usamos esa variable en otro objeto, que puede ser una “Tarea de Transformación de Datos”, una “Tarea de Secuencias ActiveX”, etc.

Nosotros en este ejemplo vamos a utilizarla en una “Tarea de Transformación de Datos”

imagen4.jpg

Creamos las conexiones origen y destino pertinentes, y en la tarea de transformación de datos escribimos una query por ejemplo así:

imagen5.jpg

Al escribir una condición igualando al signo “?”, SQL Server se da cuenta que estamos por asignar una variable a ese parámetro, hacemos clic en “Parámetros”  y seleccionamos el parámetro creado.

Este es uno de los usos más simples que tenemos de variables globales, de aquí para adelante se pueden hacer muchas cosas más, la variable dura lo que dura la ejecución del DTS, al igual que una variable de SP dura lo que dura la ejecución del SP.

Bueno, espero le sirva a alguien esta opción de utilizar variables globales en los DTS, se aceptan críticas y/o sugerencias respecto a variables globales. Próximamente veremos cómo hacer lo mismo y más en SSIS (podríamos decir que son los DTS de SQL Server 2005)

Saludos!

About these ads
Explore posts in the same categories: Técnico

9 comentarios en “Uso de Variables Globales (DTS SQL Server 2000)”

  1. Rafael Dice:

    HOLA….
    TENGO UN PROBLEMA, IRE AL GRANO, PARA NO PERDER TIEMPO, TENGO UNA TABLA CLIENTES EN UNA BD SQL Y UNA TABLA CLIENTES EN B.D. ACCES AMBOS CON LA MISMA ESTRUCTURA EN SUS RESPECTIVAS B.D.

    EL PUNTO ES QUE EN LA TABLA SQL REGISTRAN A LOS CLIENTE POR UN SISTEMA
    Y LO QUE QUIERO ES QUE LA INFORMACION NUEVA INGRESADA EN SQL SEA ENVIADA A LA TABLA ACCES, PARA ASI MANTENERLAS SINCRONIZADAS.

    E INTENTADO TRABAJARLO CON DTS Y PROGRAMANDO TAREAS, PERO LA INFORMACION SE ME DUPLICA Y SI LE PONGO INDICES A LA TABLA ACCES, LA TAREA NO SE EJECUTA PORQUE EN LA TABLA ACCES YA EXISTEN DATOS QUE EL SQL VUELVE A ENVIAR.

    EL PUNTO ES QUE NECESITO ENVIAR A ACCES SOLO LOS REGISTROS NUEVOS DE SQL.

    SI TUVIERAN LA SALUCION A ESTO SE LOS AGRADECERIA BASTANTE.

    ATTE. RAFAEL

  2. Johanna Dice:

    Hola, esta muy interesante el articulo, pero no se si puedesa ayudarme con algun ejemplo que cargue en la variable global el nombre de mi archivo que esta en un carpeta y que este se valla actulizando con cada uno de los archivo que existe en la carpeta..Gracia

  3. Jose Martorell Dice:

    Ojo: la instrucción SQL no debe contener comentarios con “–”; si existen, TODO los que venga detrás de ellos (AUNQUE ESTÉ EN FILAS DISTINTAS A LA DEL COMENTARIO) será ignorado. Acabamos de tener una mala experiencia con esta consulta introducida en un DTS:

    select * from real.ri_sgr_det_exp_D_0
    –where fec_valor in (select max(fec_valor) from real.ri_sgr_det_exp_d_0)
    where fec_valor in (’2007-12-31′,’2008-01-31′)

    La condición se ignoró, aunque la prueba del código había funcionado bien cuando previamente se ejecutó en el analizador de consultas. Saludos. =Jose=

  4. Alejandro Dice:

    Gracias…. no sabes como andaba buscando un ejemplo asi, me ayudo mucho. Cuando postearas ejemplos de SSIS????.

  5. renezito Dice:

    Gracias por lo publicado, me ayudó bastante =)
    Relacionado con esto mismo, me salió un problema. Necesito almacenar varias filas producto de una query en una variable global.
    Ejemplo:
    Select distinct tipo AS Variable from tabla
    Resultado:
    TIPO1
    TIPO2
    TIPO3
    A lo más, serán 10 tipos.
    He intentado, pero me cambia el tipo a dispatch. Y cuando lo tomo con una tarea de ActiveX, sólo me toma el primer resultado. ¿Alguna sugerencia?
    Gracias de antemano,

  6. Flavio Cortes Dice:

    Mi hermano este articulo esta muy bueno, mi pregunta concreta cual es la solucion en SQL Server 2005/2008 en el uso de variables o parametros globales?

  7. ejopia Dice:

    Muchas gracias me has ayudado a entender algo de variales globales y como usarlas en DTS.

    GRacias, buen blog


  8. Amigo como puedo hacer para pasar valores y ejecutar dts por medio de C#. ?

  9. Luis enrique Dice:

    solo el enterprise tiene dts, ya quiero usar esta herramienta para simplificar datos y sintetizar resultados


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: