Está en la página 1de 134

CAPITULO 1

Desarrollando Paquetes SSIS


Un paquete es el objeto central dentro de SQL Server Integration Services (SSIS) que
contiene la lógica de negocios para manejar el flujo de trabajo y el procesamiento de
datos. Se Utilizan paquetes SSIS para mover datos desde los orígenes a los destinos y
para manejar las precedencias cuando se procesan los datos. Puede crear paquetes
utilizando el asistente de Importación y Exportación de SQL Server en SQL Server
Management Studio (SSMS) o mediante el Diseñador SSIS en Business Intelligence
Development Studio (BIDS). En este capítulo se analiza la creación y la definición de los
paquetes en SSIS y el uso de los componentes principales de los objetos Control Flow y
Data Flow con orígenes y destinos.
SSIS está diseñado para muchas aplicaciones de integración y de procesamiento de
datos. Una de esas aplicaciones es el tratamiento de los datos en un data mart o un data
warehouse, donde los datos se utilizarán exclusivamente para el análisis y reportes en
business intelligence (BI). Aunque muchas empresas utilizan SSIS para BI, hay muchas
otras aplicaciones de SSIS. Por ejemplo, muchas organizaciones utilizan SSIS para
mover datos de sistemas antiguos hacia nuevos sistemas durante las migraciones de
aplicaciones, para integrar datos de múltiples sistemas, pasando los datos de ida y
vuelta, para extraer los datos para enviárselos a los proveedores o socios, para limpiar
los datos, para importar datos de proveedores o socios, y la lista sigue. Debido a que este
paquete de formación se centra en BI, parte del contenido de SSIS y las lecciones cubren
el uso de SSIS para la extracción, transformación y carga (ETL) del data warehouse, pero
en los capítulos de SSIS y en las lecciones también se explica sobre cómo tomar ventaja
de SSIS para otros fines.
En este capítulo inicial se explica cómo crear paquetes SSIS y define los objetos básicos
contenidos en el Flujo de Control y Flujo de Datos. En capítulos posteriores se describen
las características avanzadas, la implementación y los detalles de implementación de
SSIS.
Objetivos del Examen en este Capítulo:
 Implementar el Flujo de Control.
 Implementar el Flujo de Datos.
 Implementar la lógica de paquetes, usando variables.
 Ampliar paquetes SSIS usando código .NET.
 Identificar y resolver problemas en el despliegue de la solución SSIS.
 Instalar y mantener los componentes SSIS.
Antes de Empezar
Para completar este capítulo, debe tener:
 Conocimiento de Microsoft SQL Server 2008 R2, incluyendo las características y los
componentes SSIS.
 Experiencia de trabajo con proyectos y soluciones en Business Intelligence
Development Studio (BIDS).
 Experiencia de trabajo en SQL Server Management Studio (SSMS).
 Las bases de datos de ejemplo AdventureWorks y AdventureWorksDW2008
instaladas. Puede descargar las bases de datos del sitio web de CodePlex en
http://www.codeplex.com/MSFTDBProdSamples.

Lección 1: Creando Paquetes SSIS y Orígenes de Datos

1 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
El objeto central en SSIS es un paquete. Un paquete contiene la lógica de negocio para
manejar las tareas de extracción de datos, de manipulación, y de transformación
necesarias para mover los datos a los destinos. Los paquetes también contienen
elementos del flujo de trabajo para ayudar a procesar los datos. Estos elementos de flujo
de trabajo podrían implicar la ejecución de un procedimiento almacenado, mover un
archivo desde un servidor FTP a una carpeta de destino en el servidor, o enviar un
mensaje e-mail cuando un error ocurre. Cuando se ejecuta un paquete, la lógica interna
realiza los pasos diseñados.
Los paquetes también contienen conexiones a orígenes de datos y destinos de datos. Se
establecen estas conexiones para conectar a diferentes sistemas externos, como bases
de datos, archivos, servidores de transferencia de archivos (FTP), Servidores Simple Mail
Transfer Protocol (SMTP), y así sucesivamente. Las conexiones son usadas para el
motor de procesamiento de datos SSIS (llamado Flujo de Datos), así como para el motor
de flujo de trabajo (llamado Flujo de Control).
Creando Paquetes SSIS
El primer paso para empezar a utilizar SSIS es crear un paquete. Esto se puede hacer en
una de dos formas:
 Por utilizar el Asistente de Importación y Exportación integrado en SQL Server 2008
R2, que nos guía sobre cómo mover datos de un origen a un destino y genera
automáticamente un paquete SSIS. Después de crear un paquete en el asistente,
puede ejecutarlo inmediatamente, programarlo, o asociarlo con un proyecto SSIS.
 Por la creación explícita de un paquete dentro de un proyecto SSIS en BIDS. BIDS en
SQL Server 2008 R2 utiliza la interfaz Microsoft Visual Studio 2008 con plantillas
específicas instaladas para crear objetos BI tales como paquetes SSIS. En el entorno
de desarrollo BIDS, primero se crea un proyecto SSIS y luego se crean y desarrollan
nuevos paquetes.
El resto de esta lección explica el uso de ambos métodos para desarrollar paquetes
SSIS.
Utilizando el Asistente de Importación y Exportación
Con SQL Server 2008 R2, utilice el Asistente de Importación y Exportación para copiar
los datos sin pasar por el proceso de creación de un proyecto SSIS. Cuando utiliza el
asistente, se genera un paquete SSIS que se puede ejecutar inmediatamente o guardarlo
y luego modificarlo manualmente o programarlo.
Típicamente se inicia el Asistente de Importación y Exportación a través de SSMS
cuando se está conectado al motor relacional de SQL Server. SSMS es la herramienta de
gestión del SQL Server diseñada principalmente para la gestión de bases de datos, y
utilizaremos SSMS muchas veces en las lecciones, a través de este libro. Para iniciar
SSMS, desde el menú start, seleccionar Microsoft SQL Server 2008 R2 y luego SQL
Server Management Studio. La Figura 1-1 muestra el cuadro de dialogo Conectar con el
Servidor, donde se conecta por primera vez al Motor de Base de Datos.

2 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-1
Iniciando el Asistente de Importación y Exportación
Como su nombre lo indica, el Asistente de Importación y Exportación puede importar y
exportar datos. Utilice las siguientes consideraciones para determinar qué parte del
asistente usar:
 La importación de datos con el asistente le permite traer a una tabla SQL Server los
datos contenidos en orígenes accesibles. Los orígenes incluyen otras bases de datos
SQL Server, archivos planos, datos en hojas Microsoft Office Excel o bases de datos
Microsoft Office Access, y datos en bases de datos Oracle.
 La exportación de datos con el asistente le permite enviar datos de tablas SQL
Server, de vistas o de consultas personalizadas a conexiones de archivos planos o de
base de datos.
Para iniciar el Asistente de Importación y Exportación, siga estos pasos:
1. A través de SSMS, conéctese a la instancia del Motor de Base de Datos de SQL
Server 2008 R2 que contiene su origen o su destino.
2. Abra el Explorador de Objetos. Encontrará una lista de varios contenedores de
objetos bajo la conexión SQL Server. La carpeta Bases de Datos muestra todas las
bases de datos asociadas a la instancia SQL Server. La subcarpeta Bases de Datos
del Sistema contiene las bases de datos del sistema.
3. Para iniciar el Asistente de Importación y Exportación, de clic derecho en la base de
datos que desee utilizar como origen o destino.
4. Haga clic en Tareas. Si la base de datos es el origen de datos que desea enviar a un
sistema diferente, seleccione Exportar Datos. Si la base de datos es el destino para
archivos que actualmente existen fuera del sistema, seleccione Importar Datos, como
muestra la Figura 1-2.

3 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-2
El asistente le guiará a través de varias páginas de preguntas, cuyas respuestas son
utilizadas para construir el paquete resultante. Las páginas del asistente son las
siguientes:
1. La página Seleccionar un Origen de Datos le permite especificar la procedencia de
sus datos, tal como una base de datos SQL Server, un archivo de Excel, un archivo
plano, u otro origen. Si el origen es una base de datos relacional, también puede
configurar la seguridad de la conexión. La Figura 1-3 muestra la primera página del
Asistente de Importación y Exportación.

Figura 1-3
2. La página Seleccionar un Destino permite especificar donde serán enviados sus
datos. Se especifica el tipo de destino y, si es aplicable, el nombre del servidor y la
configuración de seguridad necesaria para acceder a los datos. Si elige Importar
Datos en SSMS para iniciar el asistente, la configuración de destino de datos se
enlazará a la base de datos que ha seleccionado antes de iniciar el asistente.
3. Si ha seleccionado un origen de base de datos relacional que permite consultas
personalizadas, en la página Especificar Copia de Tabla o Consulta, puede optar por
copiar los datos directamente desde el origen hasta el destino o especificar una
consulta. Si decide especificar una consulta, se abre una página adicional, llamada
Proporcionar una Consulta de Origen, que le permite introducir manualmente la
consulta.
4. Si el origen es una base de datos relacional y no se especifica una consulta, puede
elegir tablas y vistas de su origen en la página Seleccionar Tablas y Vistas de Origen.

4 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Si el origen es un archivo plano o ha especificado una consulta, sólo el archivo o la
consulta está disponible como una opción. También en esta página, puede renombrar
la tabla destino y editar las asignaciones de columna por hacer clic en el botón Editar
Asignaciones para definir configuraciones de columnas NULL, inserción de identidad,
y si la tabla debería ser eliminada y de nuevo ser creada.
5. Utilice la página Guardar y Ejecutar el Paquete para ejecutar el paquete de inmediato
o guardar el paquete para su posterior ejecución. Si se guarda el paquete, se puede
regresar y editar el paquete mediante el diseñador SSIS, lo que se muestra en el
resto de este capítulo.
Guardar y Editar Paquetes Creados en el Asistente
La última página del asistente le permite ejecutar el paquete inmediatamente o guardarlo.
Si decide guardar el paquete autogenerado dentro de un proyecto de Integration Services
en BIDS, como muestra la Figura 1-4, puede modificar su contenido después. A veces,
deseará utilizar el asistente para generar un paquete básico al cual añadirle lógica más
avanzada que el asistente no puede generar.

Figura 1-4
En general, el Asistente de Importación y Exportación proporciona una manera rápida de
mover datos de un origen a un destino, especialmente para usarlo una sola vez, pero hay
algunas limitaciones:
 Solo se puede especificar un origen y un destino en el asistente.
 Precedencias avanzadas de flujo de trabajo no están disponibles en el asistente.
 El asistente no comparte los origenes de datos con otros paquetes.
Es necesario evaluar si sus requerimientos de procesamiento de datos le permiten utilizar
el asistente o si es necesario desarrollar un nuevo paquete desde cero en BIDS.
Creando un Proyecto SSIS en BIDS
Aunque el Asistente de Importación y Exportación es útil para generar un paquete rápido
que mueve datos de un origen a un destino, estos paquetes son con frecuencia sólo un
punto de partida. Tarde o temprano, tendrá que desarrollar ya sea un paquete que tiene
requerimientos más complicados o crear un conjunto de paquetes coordinados. Para
estos casos, primero debe crear un nuevo proyecto SSIS en BIDS.
Nota: OBJETOS EN BIDS
Recuerde que cualquier proyecto en BIDS sólo puede contener objetos de un mismo tipo
de proyecto, tales como SSIS, SQL Server Analysis Services (SSAS), o SQL Server
Reporting Services (SSRS). Sin embargo, un proyecto puede estar asociado con
proyectos de diferentes tipos en la misma solución.

5 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Todos los componentes de SQL Server BI se generan de una manera similar a través de
la herramienta de desarrollo BIDS. Para iniciar el BIDS, desde el menú Start, seleccione
Microsoft SQL Server 2008 R2 y entonces Business Intelligence Development Studio.
Siga estos pasos para crear un nuevo proyecto SSIS:
1. En BIDS, elija Nuevo, Proyecto del menú Archivo. (Si tiene Visual Studio 2008
instalado por separado del BIDS, sólo tiene que seleccionar Nuevo Proyecto en el
menú Archivo). La Figura 1-5 muestra el cuadro de diálogo Nuevo Proyecto.
2. Rellene el cuadro de diálogo Nuevo Proyecto de la siguiente manera:
a. Bajo Tipos de Proyecto, seleccione Proyectos de Business Intelligence.
b. Bajo Plantillas, seleccione Proyecto de Integration Services.
c. Asignar un nombre a su proyecto en el cuadro Nombre.
d. En el cuadro Ubicación, vaya a la ubicación de la carpeta predeterminada para
almacenar los nuevos proyectos (en la carpeta …\Documents\Visual Studio
2008\projects) o cambiar a una ubicación de su elección.
3 Cuando haya finalizado, haga clic en Aceptar para generar el proyecto. El proyecto
contiene varias carpetas de objetos de lógica SSIS, que muestra el Explorador de
Soluciones. Puede utilizar estos objetos en sus proyectos SSIS para apuntar a las
conexiones y los procesos de datos. La Figura 1-6 muestra un nuevo proyecto, con el
paquete por defecto Package.dtsx (creada con el proyecto) en el Diseñador SSIS y el
Explorador de Soluciones a la derecha.

Figura 1-5

Figura 1-6
Ahora está listo para configurar y desarrollar su paquete.
Para agregar un paquete existente, así como uno creado por el Asistente de Importación
y Exportación a su proyecto, haga clic derecho en la carpeta Paquetes SSIS en el
Explorador de Soluciones, luego, clic en Agregar Paquete Existente. Este cuadro de
diálogo le permite importar paquetes de otros proyectos o importar paquetes que ya han
sido desplegados.

6 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Tema Clave
Cuando crea paquetes en BIDS, el paquete es almacenado en el sistema de archivos con
la extensión de archivo .dtsx. Este archivo .dtsx es un archivo XML que contiene la lógica
y la disposición para el diseño que ha desarrollado en BIDS, y puede mover el archivo a
un proyecto diferente, manualmente desplegado en distintos servidores, o que sea parte
de un paquete de despliegue. En el Capítulo 3, "Desplegando y Configurando Paquetes
SSIS", y el Capítulo 4, "Administrando, Asegurando y Ejecutando Paquetes SSIS",
trabajará con archivos .dtsx durante el despliegue y la ejecución.
Desarrollando Orígenes de Datos de Proyecto y Conexiones de
Paquete
Debido a que el objetivo principal de SSIS es mover datos de origenes a destinos, lo
siguiente más importante es, agregar apuntadores a estos orígenes y destinos. Estos
apuntadores se llaman origenes de datos y conexiones. Los orígenes de datos se
almacenan a nivel de proyectos y se encuentran en el Explorador de Soluciones bajo la
carpeta lógica llamada Orígenes de Datos. Las conexiones, por otro lado, son definidas
en los paquetes y se encuentran en el panel Administradores de Conexión en la parte
inferior de la ficha Flujo de Control o Flujo de Datos. Las conexiones pueden ser basadas
en orígenes de datos o pueden ser independientes dentro de los paquetes. Las
siguientes secciones le guiaran a través del uso e implementación de orígenes de datos y
las conexiones de paquetes.
Creación de un Origen de Datos
Un origen de datos es un objeto del proyecto SSIS. Los orígenes de datos contienen
cadenas de conexión que apuntan a archivos o bases de datos, y se puede referenciar
dentro de uno o más paquetes. Los orígenes de datos son opcionales en SSIS, pero son
beneficiosos durante el desarrollo; si tiene, un gran número de paquetes que utilizan la
misma base de datos o conexión de archivos. Utilizar un origen de datos también ayuda
si es necesario cambiar una conexión que se utiliza en muchos paquetes. Basta con
cambiar el origen de datos una vez y luego al abrir cada paquete en su proyecto, se
sincronizará automáticamente la cadena de conexión almacenada en el paquete, con el
origen de datos.
Los Orígenes de Datos de Proyecto son para Fines de Desarrollo
Solamente
Note que después de que un paquete es desplegado a un nuevo entorno y ejecutado
fuera del proyecto, la cadena de conexión ya no es actualizada por el origen de datos, del
proyecto. En su lugar, debe utilizar las configuraciones de paquete para compartir las
cadenas de conexión.
Utilizar orígenes de datos en su proyecto y paquetes, es un proceso de dos pasos:
1. Creando el origen de datos. En el Explorador de Soluciones, haga clic derecho en la
carpeta Origenes de Datos, y haga clic en Nuevo Origen de Datos. En la página de
bienvenida del asistente, haga clic en Siguiente. La Figura 1-7 muestra el Asistente
para Orígenes de Datos.

7 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-7
Si ha realizado conexiones en el pasado, en su servidor, una lista en caché de esas
conexiones aparece en el área Conexiones de Datos, y puede elegir una conexión
existente o hacer clic en el botón New para crear una nueva conexión. La Figura
anterior muestra la página de conexión del asistente sin conexiones en caché.
2. Agregando el origen de datos a un paquete. Después de crear un origen de datos
en el proyecto, es necesario agregar el origen de datos a sus paquetes.
Creación de Administradores de Conexión de Paquetes
Un administrador de conexión de paquete, a veces llamado simplemente una conexión de
paquete, es independiente de los orígenes de datos. Sin embargo, las conexiones de
paquete pueden hacer referencia a un origen de datos del proyecto. Una conexión de
paquete permite a los diferentes componentes SSIS comunicarse con un objeto (como
una base de datos, archivo o servidor) fuera del paquete. Puede utilizar conexiones de
paquete como adaptadores de origen, FTP, servidores de e-mail, o archivos planos.
Si enlaza las conexiones de paquete al origen de datos de proyecto; cuando el origen de
datos es editado, la conexión de paquete también se actualizará, cuando el paquete está
siendo desarrollado. En el entorno de diseño BIDS en la Figura 1-8, el Explorador de
Soluciones muestra un origen de datos de proyecto, y dos conexiones de paquete
aparecen en el panel Administradores de Conexión en la parte inferior del Diseñador
SSIS.

Figura 1-8
Los paquetes pueden estar basados en origenes de datos definidos en el proyecto SSIS,
o pueden ser conexiones independients dentro de un proyecto. En la Figura anterior, el
proyecto tiene un origen de datos denominado AdventureWorks2008, del que también se

8 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
hace referencia en el panel Administradores de Conexion del paquete. En este ejemplo,
el paquete contiene otra conexión llamada AventureWorksDW2008, que no hace
referencia a un origen de datos del proyecto. El icono utilizado para identificar un origen
de datos coincide con el icono de la conexión de paquete, si la conexión de paquete hace
referencia a un origen de datos del proyecto.
Agregando Conexiones en el Panel Administradores de Conexión
Para crear una conexión nueva, haga clic derecho en el panel Administradores de
Conexión en la parte inferior de la ficha Flujo de Control, como muestra la Figura 1-9.
Puede crear una conexión de un origen de datos del proyecto seleccionando Nueva
Conexión desde Origen de Datos, como muestra la Figura 1-9, o puede crear una
conexión independiente dentro de un paquete por seleccionar Nueva Conexión y luego
elegir otro proveedor de conexión de la lista Tipo de Administrador de Conexion. Una
conexión independiente es una conexión que no es compartida durante el desarrollo con
otros paquetes, utilizando un origen de datos de proyecto. Conexiones independientes en
un paquete que tienen el mismo nombre que una conexión o conexiones de otro paquete
pueden, sin embargo, ser actualizadas juntas en tiempo de ejecución a través de la
configuración del paquete.

Figura 1-9
Modificando un Origen de Datos de Proyecto
Cuando se crea una conexión de paquete de un origen de datos, esa conexión es
actualizada sólo durante el desarrollo cuando se abre el paquete y el origen de datos ha
sido cambiado. Las conexiones de paquete no se actualizan cuando se ejecutan por
separado del proyecto SSIS asociado, por ejemplo, cuando se ejecutan desde la línea de
comandos.
El primer paso para crear una conexión de paquete es elegir el tipo de conexión, como
muestra la Figura 1-9. Si selecciona una conexión basada en un origen de datos, la
conexión ya ha sido creada. Sin embargo, si opta por otro tipo de conexión, debe realizar
al menos un paso más antes de que se complete la conexión. Por ejemplo, si se conecta
a una base de datos relacional, debe seleccionar Nueva Conexión OLE DB o Nueva
Conexión ADO.NET (dependiendo del proveedor de conexión que desea utilizar para
acceder a la base de datos). Después de seleccionar el tipo de conexión, es necesario
configurar esa conexión.
Cuando se selecciona el tipo de conexión, SSIS le pide que seleccione una cadena de
conexión que se ha almacenado en el caché en la máquina que está trabajando o crear
una nueva conexión en caché. Si la cadena de conexión está almacenada en caché en el
equipo, sólo tiene que seleccionar esa conexión de la lista para añadirlo a la lista de
conexiones en el panel Administradores de Conexión en el paquete.
Si una cadena de conexión no existe en el caché, lo que necesita es crear una nueva
cadena de conexión. Por ejemplo, para definir una nueva cadena de conexión, para una

9 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
conexión OLE DB, en el panel Administradores de Conexión, haga clic derecho y luego
haga clic en Nueva Conexión OLE DB. A continuación, en el cuadro de dialogo
Configurar el Administrador de Conexiones OLE DB, haga clic en Nueva. En la lista
Proveedor, escoja de la lista de proveedores OLE DB que están instaladas en su
máquina, y entonces, especifique el nombre de base de datos y las credenciales de
seguridad de conexión, como muestra la Figura 1-10, luego, haga clic en Aceptar.
Después de especificar las opciones de conexión, puede elegir la conexión recientemente
en caché de la lista, luego se añade la nueva conexión al panel Administradores de
Conexión en el paquete.

Figura 1-10
Ahora que ha terminado de crear el paquete y las conexiones de paquete, está listo para
comenzar a desarrollar los componentes del paquete. Las Conexiones son utilizadas en
varios componentes del paquete, incluidos las tareas de Flujo de Control Flow, los
adaptadores de Flujo de Datos y las transformaciones, controladores de eventos, registro
de paquetes, y configuraciones de paquetes.
PRACTICA: Creando Nuevos Paquetes, Data Sources y Conexiones
Los siguientes ejercicios lo familiarizarán con las tareas comunes de la creación de un
nuevo proyecto en BIDS y el trabajo con las data sources y conexiones.
EJERCICIO 1: Crear el Proyecto y los Paquetes
En este ejercicio, creará un nuevo proyecto SSIS y luego trabajará con un par de
paquetes SSIS mediante la adición de data sources y conexiones.
1. Iniciar SQL Server Business Intelligence Development Studio (BIDS), haciendo clic en
el botón Start y seleccione All Programs, Microsoft SQL Server 2008 R2, SQL Server
Business Intelligence Development Studio.
2. Elegir Nuevo, Proyecto del menú Archivo. (Si tiene Visual Studio 2008 instalado por
separado de BIDS, simplemente elija Nuevo Proyecto del menú Archivo). El cuadro
de diálogo Nuevo Proyecto muestra todas las plantillas instaladas para Microsoft
Visual Studio, incluyendo las plantillas Poryectos de Business Intelligence.
3. En el cuadro de diálogo Nuevo Proyecto, compruebe que Poryectos de Business
Intelligence se ha seleccionado en el área Tipos de Proyecto, y luego en el área
Plantillas, seleccione la plantilla Proyecto de Integration Services.
4. Cerca de la parte inferior del cuadro de diálogo Nuevo Proyecto, en el cuadro
Nombre, escriba Proyecto SSIS como el nombre de su proyecto SSIS.
5. En el cuadro Location, escriba la ruta, a partir de la carpeta de documentos en:
C:\SSIS\Codigo\Cap1\.

10 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
6. A continuación, desactive la casilla de verificación Crear Directorio para la solución,
que almacena el proyecto SSIS en la carpeta especificada en el paso 5.
7. Haga clic en Aceptar para que BIDS cree el nuevo proyecto SSIS.
8. Cuando se crea el proyecto, SSIS crea automáticamente un nuevo paquete SSIS
llamado Package.dtsx y lo abre en el Diseñador SSIS. En el Explorador de
Soluciones, de clic derecho en Package.dtsx, a continuación, de clic en Cambiar
Nombre.
9. Renombre el paquete escribiendo MiPaquete.dtsx. BIDS puede pedirle que
renombre el objeto de paquete. Si aparece un mensaje que le pide que cambie el
nombre del objeto de paquete, haga clic en Si. Siempre haga clic en Si cuando se le
pida cambiar el objeto del paquete cuando renombre un paquete, ya que actualiza el
nombre interno del paquete.
10. Haga clic en el botón Guardar en la barra de herramientas; luego, cierre el paquete
haciendo clic en el botón Cerrar en la esquina superior derecha del Diseñador SSIS.
11. Para crear un nuevo paquete, haga clic derecho en la carpeta Paquetes SSIS en el
Explorador de Soluciones y, luego, haga clic en Nuevo Paquete de SSIS. Esto crea
un nuevo objeto paquete llamado Package1.dtsx (el número depende de cuántos
paquetes se han creado) en la carpeta Paquetes SSIS en el Explorador de
Soluciones.
12. Para renombrar el nuevo paquete, haga clic derecho en el paquete, y luego haga clic
en Cambiar Nombre. Renombre el paquete a DimCustomer.dtsx porque este
paquete contiene la lógica para procesar la tabla de dimensiones de clientes. Cuando
se le pida, haga clic en Si para renombrar el objeto paquete.
13. Siguiendo los mismos pasos, cree un paquete más en su proyecto SSIS llamado
DimPromotion.dtsx.
EJERCICIO 2: Crear Origenes de Datos de Proyecto
En este ejercicio, creará dos data sources de proyecto, que serán utilizados en los
paquetes como el origen y el destino.
1. Si es necesario, inicie el SQL Server Business Intelligence Development Studio
(BIDS), abra el proyecto creado en el Ejercicio 1, Proyecto SSIS y, luego, abra el
Explorador de Soluciones (si no está ya en pantalla). Abrir el Explorador de
Soluciones, haciendo clic en el botón Explorador de Soluciones de la barra de
herramientas estándar.
2. En el Explorador de Soluciones, haga clic derecho en la carpeta Origenes de Datos, y
haga clic en Nuevo Origen de Datos. Cuando la página de Bienvenida al Asistente
para Origenes de Datos aparezca, haga clic en Siguiente.
3. En la página Seleccionar Como Definir la Conexion, seleccione Crear un Origen de
Datos basado en una Conexion Nueva o Existente.
4. Haga clic en Nueva para abrir el cuadro de dialogo Administradores de Conexión.
5. En la lista desplegable Proveedor, seleccione el proveedor OLE DB Nativo\SQL
Server Native Client 10.0 y haga clic en Aceptar. Tipee (local) en el campo Nombre
del Servidor.
6. En la lista desplegable Seleccione o Escriba el nombre de la Base de Datos,
seleccione AdventureWorks2008.
7. Haga clic en el botón Probar Conexión y, luego, haga clic en Aceptar. Haga clic en
Aceptar de nuevo para cerrar el cuadro de dialogo Administradores de Conexión.
8. Seleccione la conexión de datos (local).AdventureWorks2008 de la lista Conexiones
de Datos, luego, haga clic en Finalizar en el Asistente de Origenes de Datos.
9. La página Finalizacion del Asistente le pedirá que introduzca un nombre para el nuevo
proyecto de origen de datos. Tipee AdventureWorks2008 en el cuadro Nombre de

11 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Origen de Datos, luego, haga clic en Finalizar. Asegúrese de quitar el espacio entre
Adventure y Works2008.
10. Seguidamente, repita los pasos 2 al 9 para crear un nuevo origen de datos de
proyecto para la base de datos (local).AdventureWorksDW2008, y nombre este origen
de datos como AdventureWorksDW2008.
11. Cuando haya terminado de crear los orígenes de datos, haga clic en el botón Guardar
Todo en la barra de herramientas de BIDS.
EJERCICIO 3: Crear New Package Connection de Origenes de Datos de Proyecto
En este ejercicio, va a agregar las Origenes de Datos de proyecto que acaba de crear a
los dos paquetes que se han desarrollado.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto creado en el Ejercicio 1, Proyecto SSIS y, luego, abra el Explorador
de Soluciones. Editar el paquete MiPaquete.dtsx haciendo doble clic en el paquete en
el Explorador de Soluciones.
2. Localice el panel Administradores de Conexión (en la parte inferior de la ventana del
Diseñador SSIS), haga clic derecho en el panel y luego clic en Nueva Conexión desde
Origen de Datos.
3. En el cuadro de diálogo Seleccionar Origen de Datos, seleccione los orígenes de
datos AdventureWorks2008 y AdventureWorksDW2008 de la lista y haga clic en
Aceptar. Esto pone a los dos orígenes de datos de proyecto en el panel
Administradores de Conexión del paquete.
4. Realizar los mismos pasos en el paquete DimCustomer.dtsx para añadir los orígenes
de datos de proyecto AdventureWorks2008 y AdventureWorksDW2008 como
Administradores de conexión para el paquete.
5. Cuando haya terminado de crear los Administradores de conexión, haga clic en el
botón Guardar Todo en la barra de herramientas BIDS.
Comprobación Rápida
1. Se le pide combinar los datos de un libro de trabajo Excel y una tabla de base de
datos y luego colocar los resultados en un archivo plano de ancho fijo. ¿Se puede
realizar esta tarea mediante el Asistente de Importación y Exportación?
2. Es necesario crear paquetes SSIS para procesar sus datos y cubos SSAS para
realizar el análisis. ¿Se puede crear ambos objetos en un solo proyecto?
3. ¿Cuál es la diferencia entre un origen de datos de proyecto y una conexión de
paquete?
4. Si una conexión hace referencia a un origen de datos y el origen de datos se modifica,
¿Cuándo se actualizará la conexión?
Respuestas de Comprobación Rápida
1. No. El Asistente de Importación y Exportación le permite trabajar con un solo origen y
un solo destino. Para combinar tareas de fusión de datos o tareas de limpieza de
datos, es necesario crear ya sea un nuevo paquete específicamente para ese fin o
modificar un paquete previamente creado por el asistente.
2. No. No puede crear ambos objetos SSIS y SSAS en un mismo proyecto, porque BIDS
no le permite combinar objetos utilizados para diferentes plataformas. Se necesita
construir dos proyectos separados en BIDS: uno para los paquetes de SSIS y otro
para los cubos SSAS y las dimensiones.
3. Ambos, orígenes de datos de proyecto y conexiones de paquete son cadenas de
conexión. Sin embargo, un origen de datos reside fuera del paquete y puede ser
utilizado como una conexión de referencia para más de un paquete. Una conexión de
paquete no tiene que estar asociado a un origen de datos.
4. Las conexiones son actualizadas por sus orígenes de datos asociados, únicamente
cuando el paquete se abre para su edición en BIDS.

12 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Lección 2: Creando y Editando Objetos de Flujo de Control
Ahora que ha creado un proyecto SSIS, paquetes y conexiones de paquete, es hora de
empezar a utilizar las características de SSIS para la integración de datos y la lógica de
procesamiento. Esta lección y la Lección 3, "Usando adaptadores de Flujo de Datos y
transformaciones", se centran en los dos componentes principales dentro de SSIS: el
Flujo de Control y el Flujo de Datos. El Flujo de Control es el motor del flujo de trabajo y
contiene las tareas de flujo de control, los contenedores y las restricciones de
precedencias, que gestionan cuando las tareas y contenedores se ejecutan. El Flujo de
Datos, por el contrario, está directamente relacionado con el procesamiento y la
transformación de datos de los orígenes a los destinos.
En esta lección se analiza la definición de los objetos de flujo de control en la superficie
de diseño Flujo de Control. Cuando tiene un proyecto SSIS abierto en BIDS y está
diseñando un paquete, las pestañas en la parte superior del Diseñador SSIS le permiten
elegir un componente SSIS para trabajarlo. La superficie de diseño de Flujo de Control es
la primera pestaña y muestra un espacio de trabajo donde se configuran los objetos de
flujo de control. Hay tres tipos principales de objetos de flujo de control:
 Las tareas Flujo de Control. Son objetos de flujo de trabajo que realizan trabajos a
nivel operativo.
 Los contenedores Flujo de Control. Proporcionan un mecanismo de agrupación
para tareas y otros contenedores.
 Restricciones. Permite conectar tareas y contenedores y definir el orden de
ejecución y las precedencias.
Creando Tareas Flujo de Control
Una tarea flujo de control es un componente SSIS que realiza una operación tal como el
envío de un mensaje e-mail, la ejecución de una sentencia SQL, o copiar un archivo
desde un servidor FTP. Cuando una tarea Flujo de Control está completa, ya sea correcta
o incorrecta. Se utiliza el flujo de control para coordinar la ejecución de tareas en paralelo
o para establecer las restricciones de precedencia en base al estado de finalización de
tareas. Véase el Capítulo 2, "Depuración y Tratamiento de Error en SSIS", para aprender
más acerca de las restricciones de precedencia.
Para crear una nueva tarea Flujo de Control en su paquete, arrastre la tarea de la caja de
herramientas a la ficha Flujo de Control al Diseñador SSIS. La Figura 1-11, muestra la
ventana Cuadro de Herramientas cuando a la ficha Flujo de Control se le hace clic en el
Diseñador SSIS.

Figura 1-11
Después de agregar una tarea en el espacio de trabajo Flujo de Control, se necesita
configurar la tarea para realizar la operación específica que haya seleccionado. Para
habilitar la configuración, cada tarea tiene un editor que se puede abrir dándole doble clic

13 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
en la tarea o dándole clic derecho a la tarea y haciendo clic en Editar. La Tabla 1-1
enumera las tareas SSIS bajo la lista Elementos de Flujo de Control en la caja de
herramientas.
Debe haber notado que hay también una lista Tareas de Plan Mantenimiento para el Flujo
de Control. Estos son principalmente para administradores de bases de datos (DBAs),
que son los que manejan las bases de datos de SQL Server 2008R2 a través de la
interfaz del plan de mantenimiento en SSMS o DBAs que están creando paquetes en
BIDS para el mantenimiento de bases de datos.
Como puede ver, SSIS ofrece la posibilidad de realizar una serie de diferentes
procesamientos y operaciones de integración. Está más allá del alcance de este libro,
analizar los patrones de diseño de los componentes, pero se utilizará varias de estas
tareas, en algunos ejemplos de las lecciones y un par de tareas serán analizadas aquí.
Tabla 1-1. Tareas comunes en SSIS
TAREA DESCRIPCION
Ejecuta Microsoft Visual Basic Scripting Edition (VBScript) y código JScript,
Tarea Script ActiveX que se incluye principalmente por compatibilidad con versiones anteriores,
cuando un paquete Servicio de Transformación de Datos (DTS) se migra a
SSIS.
Ejecuta código XML para Análisis (XMLA) a una base de datos SSAS. XMLA
Tarea Ejecutar DDL de Analysis es el lenguaje de definición de datos (DDL) para SSAS; por lo tanto, esta tarea
Services le permite realizar cambios de estructura común, tales como añadir particiones
a los cubos.
Tarea Procesamiento de Analysis
Permite el procesamiento de objetos SSAS a través de un paquete SSIS.
Services
Permite la ejecución de las operaciones de copia masiva en SQL Server. Esta
Tarea Insercion Masiva
tarea sólo funciona contra un Motor de base de datos SQL Server.
Permite el procesamiento de datos de origenes a destinos. La Lección 3 en
Tarea Flujo de Datos
este capítulo, cubre la tarea Flujo de Datos con más detalle.
Tarea Consulta de Mineria de Realiza consultas de minería de datos y le permite capturar los resultados
Datos para su análisis.
Permite el análisis de data source para patrones, los datos faltantes, llaves
Tarea Generacion de Perfiles de candidatas, y estadísticas. Estos resultados suelen informar a los
Datos desarrolladores, acerca de que lógica incluir en sus paquetes SSIS, basados
en las necesidades de los datos.
Ejecuta otros paquetes SSIS desplegándolos a SQL Server o al sistema de
Tarea Ejecutar Paquete
archivos.
Ejecuta una operación en línea de comandos, tal como un programa o una
Tarea Ejecutar Proceso
ejecución de un archivo de lotes.
Se ejecuta un código SQL en alguna conexión de base de datos, en el
Tarea Ejecutar SQL
lenguaje SQL del motor de base de datos conectada.
Permite copiar, mover y eliminar archivos, así como realizar operaciones de
Tarea Sistema de Archivos
archivo y de carpetas.
Envía y recibe archivos entre el sistema de archivos y un servidor FTP; y
Tarea FTP
realiza operaciones sencillas de archivo y de carpetas en el Servidor FTP.
Integrada con Message Queuing (MSMQ) en un servidor que ejecuta Windows
Tarea Cola de Mensajes
para leer y enviar mensajes.
Ejecuta Microsoft Visual Basic 2008 o Microsoft Visual C# 2008 dentro de un
Tarea Script
paquete SSIS.
Tarea Enviar Correo Envía un mensaje e-mail a través de un servidor SMTP.
Tareas Transferir Bases de
Datos, Inicios de Sesion, Tareas que copian objetos SQL Server de un sistema a otro, incluyendo bases
Mensajes de Error, Objetos SQL de datos, Jobs de SQL Server Agent, mensajes de error, inicios de sesión,
Server, Prodedimientos maestro de procedimientos almacenados y objetos a nivel de base de datos.
Almacenados, Jobs.
Tarea Servicio Web Le permite conectarse a un Servicio Web para enviar o recibir información.
Tarea Lector de Datos WMI Le permite ejecutar un Windows Management Instrumentation (WMI) en el

14 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
sistema operativo para capturar información del servidor.
Tarea Monitor de Eventos WMI Espera por un evento en particular, antes de ejecutarlo.
Tarea XML Combinaciones, consultas, y diferentes archivos XML en el servidor.

Utilizando Contenedores de Flujo de Control


Su paquete debe contener al menos una tarea que lleva a cabo una operación específica;
sin embargo, la mayoría de las veces, los paquetes tienen varias tareas que se coordinan
entre sí, y se necesita una manera de organizarlas. Aquí es donde un contenedor Flujo
de Control puede ayudar. Un contenedor Flujo de Control permite agrupar tareas juntas,
para controlar cómo las tareas se ejecutan en paralelo, así como su ordenamiento,
registro y transacciones. Los contenedores también pueden ejecutar las tareas dentro de
ellas varias veces en base a requisitos iterativos.
Así como las tareas, se encuentran los contenedores en el Cuadro de Herramientas,
cuando se trabaja en el Flujo de Control. Para utilizar un contenedor, sólo tiene que
arrastrar el contenedor del Cuadro de Herramientas hasta el espacio de trabajo Flujo de
Control. La pantalla de la Figura 1-12 muestra un Flujo de Control de un paquete que
contiene un solo recipiente que contiene varias tareas.

Figura 1-12
Adicionalmente, puede arrastrar objetos de tareas y otros contenedores dentro del
contenedor.
Hay tres tipos de contenedores primarios en SSIS: un contenedor de Secuencias, un
contenedor de Bucles For, y un contenedor de Bucles Foreach.
 Contenedor de Secuencias. Le permite organizar las tareas subordinadas
agrupándolas, y permite aplicar las transacciones o asignar registros en el
contenedor.
 Contenedor de Bucles For. Proporciona la misma funcionalidad que el contenedor
de Secuencias, excepto que también le permite ejecutar las tareas varias veces sobre
la base de una condición de evaluación, por ejemplo como un bucle de 1 a 10.
 Contenedor de Bucles Foreach. También permite bucles, pero en lugar de
proporcionar una expresión de condición, se recorre un conjunto de objetos, tal como
archivos en una carpeta.
La Figura 1-13 muestra el Editor de Bucles Foreach, que se abre haciendo doble clic en
el contenedor o dándole clic derecho en el contenedor y luego clic en Editar.
Como se ha descrito, el contenedor de Bucles Foreach puede iterar diferentes tipos de
objetos, y las opciones de configuración permiten especificar los objetos sobre los que se
aplicará el lazo y la configuración detallada. Por otra parte, los valores de los objetos
enumerados se pueden poner en las variables de usuario. Por ejemplo, el contenedor de

15 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Bucles Foreach puede iterar a través de los archivos en una carpeta y retornar los
nombres de archivo en una variable.

Figura 1-13
Trabajando con Variables de Paquete
Las variables dentro de SSIS, son una manera de integrar los objetos por el envío de
valores entre las tareas y los contenedores, la aceptación de los valores de orígenes
externos, o la construcción de código de forma dinámica para que sea ejecutada.
También puede utilizar las variables para auditoría y registro.
Para trabajar con variables dentro de un paquete, elija Variables en el menú SSIS
(cuando diseñe un paquete). La Figura 1-14 muestra la ventana Variables en BIDS.
En la parte superior de la ventana Variables están los botones que le permiten crear y
borrar variables, así como ver otras variables dentro de un paquete. Como muestra la
Figura siguiente, a todas las variables SSIS se les da un nombre, un ambito, un tipo de
datos y un valor. El ámbito define a qué nivel dentro de un paquete, la variable es creada.
Por ejemplo, si selecciona un contenedor de Bucles Foreach y hace clic en el botón
Agregar Variable en la barra de herramientas de la ventana Variables, la variable está en
el ámbito de ese nivel. Cuando no hay tareas o contenedores seleccionados, la variable
está en el ámbito en el nivel de paquete completo.

Figura 1-14
TEMAS CLAVE
Las variables son visibles en una tarea o un contenedor sólo si el alcance de las variables
se encuentra en el ámbito de la tarea o contenedor en cuestión, en el ámbito de un nivel
de contenedor padre, o en el ámbito del mismo paquete. Por ejemplo, si una tarea

16 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Ejecutar SQL tiene una variable directamente asignada a través del ámbito de la variable,
sólo la tarea Ejecutar SQL puede ver y utilizar la variable. Otras tareas o contenedores no
podrán hacer referencia a la variable. Por otro lado, si un Contenedor de Bucles Foreach
tiene una variable con ámbito a ella, todas las tareas en el contenedor de Bucles Foreach
(incluido el contenedor mismo) puede hacer referencia y usar la variable. Las variables
son referenciadas como User::[NombreVariable] o System::[NombreVariable].
Dentro de SSIS, hay dos tipos de variables: las variables de sistema y las variables de
usuario.
 Variables de Sistema. Las variables de sistema no se pueden modificar, pero se
puede hacer referencia a ella dentro de las tareas y contenedores. Las variables de
sistema son establecidos por el paquete, para los metadatos de seguimiento; tales
como el nombre del paquete y el usuario que ejecuta el paquete. Para ver todas las
variables de sistema, haga clic en Mostrar Variables de Sistema (el botón con una X)
en la barra de herramientas de la ventana Variables.
 Variables de Usuario. Puede crear y definir las variables de usuario para cualquier
propósito en el paquete. Por ejemplo, el contenedor de Bucles Foreach actualiza
variables de usuario con los valores para cada bucle que recorre. En la Figura
mostrada anteriormente, los nombres de archivos de todos los ficheros en el disco
C:\, que comiencen con la palabra Customer, serán asignadas a una variable llamada
NombreArchivo. La Figura 1-15 muestra la ficha Asignacion de Variables, en el Editor
de Bucles Foreach.

Figura 1-15
Usando la tarea Script y la tarea Generacion de Perfiles de Datos
Aunque este libro se centra en el desarrollo y el mantenimiento, en lugar del diseño, vale
la pena destacar algunas tareas clave de Flujo de control. El objetivo de este libro cubre
el uso de código dentro de un paquete, así como la realización de perfiles de datos, así
que vamos a mirar a la tarea Script y la tarea Generacion de Perfiles de Datos.
Tarea Script
Puede utilizar la tarea Script dentro de SSIS para ejecutar código VB.NET o C#.NET. La
tarea Script tiene las siguientes características:
 Usa las herramientas de la interfaz Visual Studio para aplicaciones 2.0 (VSTA), que
permite ejecutar código VB.NET y C#.NET con la completa variedad de funciones y
métodos.
 Las variables pueden ser referenciadas y actualizadas en un script.
 Las conexiones pueden ser referenciadas y actualizadas en un script.
 Los puntos de interrupción SSIS se pueden aplicar en el código del script (para la
tarea Script). En el Capítulo 2 se discute sobre puntos de ruptura.
 Se ejecuta tanto en un entorno de 32 bits (x86) como en un entorno de 64 bits (X64).

17 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
TEMA CLAVE
Si desea hacer referencia a variables SSIS en una tarea Script, es necesario incluir las
variables en la lista ReadOnlyVariables o ReadWriteVariables, en función de si se
accederá a la variable para los propósitos de lectura o actualización de la variable.
En el ejemplo de Control Flow mostrado anteriormente en las 3 anteriores Figuras, el
paquete está recorriendo a través de archivos Excel y almacenando la ruta del archivo
Excel en una variable de paquete. El paquete contiene una conexión a Excel que debe
ser actualizado con el valor de la variable, porque cada vez que recorre el paquete, la
variable debe ser actualizada.
Utilizando una tarea Script, puede actualizar la conexión de Excel con el valor de la
variable. El primer paso es arrastrar una tarea Script dentro del contenedor Foreach Loop
de la Toolbox. El script debe ser la primera tarea que se ejecuta en el contenedor
Foreach Loop, así que se coloca antes de la tarea Execute SQL y se le conecta con una
restricción de precedencia. (Las restricciones de precedencia se tratan en el Capítulo 2).
La Figura 1-16 muestra el Scrip Task Editor.

Figura 1-16
En este ejemplo se utiliza Microsoft Visual Basic 2008 como el ScriptLanguage y se
especifica la variable User::FileName en la propiedad ReadOnlyVariables. Para el diseño
del script, en el Script Tast Editor, haga clic en Edit Script.
Para este ejemplo, el script tiene que actualizar el administrador de conexión de Excel
(Ms Excel 97-2003), para apuntar al valor de la variable, como muestra el código
siguiente:
Dts.Connections("Excel Connection Manager").ConnectionString() = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
Dts.Variables("FileName").Value.ToString() + _
";Extended Properties=""EXCEL 8.0;HDR=YES"";"
La referencia a la conexión comienza con Dts.Connections y la referencia a las variables
comienza con Dts.Variables.
Este código se ejecuta para cada bucle en el contenedor Foreach Loop y actualiza el
administrador de conexiones de Excel.
Tarea Data Profiling
Puede utilizar la tarea Data Profiling para revisar las entidades de fuente de datos, para
verificar la limpieza y la integridad de los datos, y para entender cómo los datos están
estructuralmente organizados, así como posibles columnas clave y relaciones entre
columnas.

18 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
La tarea Data Profiling tiene dos partes: la tarea Data Profiling en el Control Flow que
realiza el análisis y el visor Data Profile para revisar los resultados.
Para utilizar la tarea Data Profiling, primero debe crear una conexión ADO.NET, donde
residan las tablas de origen o vistas. La tarea Data Profiling requiere una conexión
ADO.NET para los origenes. A continuación, arrastre la tarea de la Toolbox hasta el
Control Flow, y luego, abra la tarea para editar sus propiedades. La forma más sencilla de
desarrollar un Data Profiling es hacer clic en el botón Quick Profile en el Editor de tareas
Data Profiling. La Figura 1-17 muestra el cuadro de dialogo Single Table Quick Profile
Form, configurado para ejecutarse en la vista [Sales].[vPersonDemographics].

Figura 1-17
Tabla 1-2. Características de Tareas Data Profiling
PERFIL DESCRIPCION
Evalúa la columna y devuelve el porcentaje de valores NULL en la
Perfil Column Null Ratio
columna con respecto al número total de filas de la tabla.
Para las columnas numeric y datetime, devuelve la dispersión y el
Perfil Column Statistics
promedio de los valores.
Identifica la unicidad de los valores en una columna a través de todas
Perfil Column Value Distribution
las filas de esa columna.
Muestra las longitudes de valor distintas para una columna de texto y
Perfil Column Length Distribution
el porcentaje de todas las filas que cada longitud toma.
Muestran los patrones que se encuentran en la columna de datos y
Perfil Column Pattern
devuelve el patrón de expresión regular que coincide con el patrón.
Identifica una o más columnas que son únicas a través de todas las
Perfil Candidate Key
filas, el porcentaje de la unicidad se muestra.
Lista de las columnas que tienen valor dependiente de otras columnas
Perfil Functional Dependency en la tabla, donde el valor de una columna se encuentra sólo, cuando
el valor de otra columna es distinto.
Después de configurar la tarea Data Profiling a través de la caja de dialogo Single Table
Quick Profile Form, es necesario especificar el archivo de salida XML en la propiedad
Destination. Aquí es donde, la tarea almacena los resultados de los perfiles.
Para ver los resultados, abra el Visor Data Profile (Haga clic en Start, seleccione All
Programs, Microsoft SQL Server 2008 R2, Integration Services, Data Profile Viewer).
Haga clic en Open en la barra de herramientas, y busque el archivo de salida XML, donde
se almacenan los resultados. La Figura 1-18 muestra el Data Profile Viewer.
El Data Profile Viewer muestra cada tipo de perfil. El panel izquierdo le permite navegar
entre los tipos de perfiles y tablas de origen que se perfilan. El panel derecho muestra los
resultados.

19 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-18
Probando la ejecución del paquete en BIDS
Durante el desarrollo de un paquete, es necesario hacer una prueba de ejecución para
comprobar que su paquete y las tareas están configurados correctamente.
Puede ejecutar un paquete desde BIDS en tres formas:
 Elegir Start Debugging en el menú Debug en la barra de menú.
 Hacer clic en Start Debugging (el botón con una flecha que se asemeja al botón Play
en un reproductor) en la barra de herramientas.
 Presione la tecla F5 en su teclado.
Después de que un paquete se ejecuta en BIDS, una nueva pestaña llamada la ficha
Progress aparece en el Diseñador SSIS. Esta ficha muestra los resultados de la
ejecución y le permite solucionar los errores del paquete que pueda encontrar. La ficha
Progress se renombra como Execution Results cuando se retorna a la vista de Diseño.

PRACTICA: Creación y edición de una tarea de control de flujo


Los siguientes ejercicios le familiarizarán con la creación y edición de una tarea Control
Flow y la ejecución del paquete en el entorno de diseño.
EJERCICIO 1: Crear una tarea Control Flow y probar la ejecución del paquete.
En este ejercicio, trabajara con tareas Control Flow y ejecutará paquetes en el diseñador
SSIS.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS que creó en la Lección 1, "Creación de paquetes
SSIS y Data Sources", y a continuación, edite el paquete llamado MyPackage.dtsx
(haga clic derecho en el paquete en Solution Explorer y, haga clic en Open).
2. Abra la ventana Toolbox, seleccione Toolbox del menú View, localice la tarea Execute
SQL, y arrastrelo al área de trabajo Control Flow de su paquete.
3. Edite el objeto de tarea Execute SQL, haga doble clic en el icono de la tarea o dele
clic derecho al icono de la tarea y luego clic en Edit.
4. Cambie la propiedad Connection para utilizar la conexión AdventureWorks2008R2.
5. En la propiedad SQLStatement del cuadro de diálogo Execute SQL Task Editor,
escriba el siguiente código:
UPDATE Production.Product
SET ProductLine = 's'
WHERE ProductLine IS NULL

20 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
6. Haga clic en OK en el cuadro de diálogo de la Tarea Execute SQL para volver al
Diseñador SSIS. Haga clic derecho en la tarea Execute SQL, haga clic en Rename, y
escriba Actualizar ProductLine.
7. A continuación, arrastre un objeto contenedor Sequence de la Toolbox al área de
trabajo del Control Flow.
8. Arrastre la tarea Execute SQL llamada Actualizar ProductLine, que acaba de crear
dentro del contenedor Sequence para que la tarea está contenida en la caja del
contenedor Sequence.
9. Para verificar la ejecución del paquete, haga clic en Start Debugging en la barra de
herramientas Estándar o seleccione Start Debugging en el menú Debug.
10. Cuando la ejecución del paquete este completa, su contenedor Sequence y la tarea
Execute SQL deben estar de color verde.
11. Haga clic en la ficha Execution Results (llamado Progress, mientras que el paquete se
está ejecutando) en el Diseñador SSIS para ver los detalles de la ejecución.
12. Seleccione el botón Stop Debugging de la barra de herramientas estándar, para
detener el depurador (o seleccione Debug, Stop Debugging en el menú Debug).
13. Haga clic en el botón Save All en la barra de herramientas BIDS.
EJERCICIO 2: Modificar el paquete ETL DimCustomer del Control Flow
En este ejercicio, se iniciará el proceso de construcción del paquete SSIS DimCustomer,
que manejará el proceso ETL de la base de datos AdventureWorks2008R2 a la base de
datos AdventureWorksDW2008R2.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS que creó en la lección 1, "Creación de paquetes
SSIS y Data Sources", y a continuación, abra el paquete DimCustomer vacío.
2. Desde la Toolbox, arrastre dos tareas Execute SQL al área de trabajo Control Flow y
a continuación, arrastre una tarea Data Flow al área de trabajo.
3. A continuación, conecte la primera tarea Execute SQL a la tarea Data Flow
arrastrando la restricción de precedencia verde de la tarea Execute SQL hacia la
tarea Data Flow. A continuación, conecte la restricción de precedencia verde de la
tarea Data Flow a la segunda Tarea Execute SQL.
4. Renombre la primera tarea Execute SQL a Truncate Update Table, y renombre la
segunda Tarea Execute SQL a Batch Updates. La Figura 1-19 muestra como lucirá
el Control Flow.

Figura 1-19
5. Antes de editar las tareas en SSIS, abrir SSMS, conectese al Database Engine, y
cree una nueva consulta en la base de datos AdventureWorksDW2008R2. Ejecute el
siguiente código (archivo SQL: CrearTabla_stgDimCustomerUpdates):
USE AdventureWorksDW2008R2
GO
CREATE TABLE [dbo].[stgDimCustomerUpdates](
[CustomerAlternateKey] [nvarchar](15) NULL,
[AddressLine1] [nvarchar](60) NULL,
[AddressLine2] [nvarchar](60) NULL,
[BirthDate] [datetime] NULL,
[CommuteDistance] [nvarchar](15) NULL,

21 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
[DateFirstPurchase] [datetime] NULL,
[EmailAddress] [nvarchar](50) NULL,
[EnglishEducation] [nvarchar](40) NULL,
[EnglishOccupation] [nvarchar](100) NULL,
[FirstName] [nvarchar](50) NULL,
[Gender] [nvarchar](1) NULL,
[GeographyKey] [int] NULL,
[HouseOwnerFlag] [nvarchar](1) NULL,
[LastName] [nvarchar](50) NULL,
[MaritalStatus] [nvarchar](1) NULL,
[MiddleName] [nvarchar](50) NULL,
[NumberCarsOwned] [tinyint] NULL,
[NumberChildrenAtHome] [tinyint] NULL,
[Phone] [nvarchar](25) NULL,
[Suffix] [nvarchar](10) NULL,
[Title] [nvarchar](8) NULL,
[TotalChildren] [tinyint] NULL,
[YearlyIncome] [nvarchar](100) NULL) ON [PRIMARY]
6. Luego que se ha creado exitosamente la tabla, vuelva al paquete SSIS DimCustomer
y edite la tarea Execute SQL llamada Truncate Update Table.
7. En el cuadro de dialogo Execute SQL Task Editor, establezca la propiedad
Connection a AdventureWorksDW2008R2, a continuación, escriba el siguiente código
SQL en la propiedad SQLStatement antes de hacer clic en OK para guardarlo:
TRUNCATE TABLE dbo.stgDimCustomerUpdates
8. Editar la última tarea Execute SQL, llamada Batch Updates, y establecer la propiedad
Connection a AdventureWorksDW2008R2.
9. En la propiedad SQLStatement, introduzca la siguiente instrucción UPDATE (archivo
SQL: Actualizar_DimCustomer).
UPDATE dbo.DimCustomer
SET AddressLine1 = stgDimCustomerUpdates.AddressLine1
, AddressLine2 = stgDimCustomerUpdates.AddressLine2
, BirthDate = stgDimCustomerUpdates.BirthDate
, CommuteDistance = stgDimCustomerUpdates.CommuteDistance
, DateFirstPurchase = stgDimCustomerUpdates.DateFirstPurchase
, EmailAddress = stgDimCustomerUpdates.EmailAddress
, EnglishEducation = stgDimCustomerUpdates.EnglishEducation
, EnglishOccupation = stgDimCustomerUpdates.EnglishOccupation
, FirstName = stgDimCustomerUpdates.FirstName
, Gender = stgDimCustomerUpdates.Gender
, GeographyKey = stgDimCustomerUpdates.GeographyKey
, HouseOwnerFlag = stgDimCustomerUpdates.HouseOwnerFlag
, LastName = stgDimCustomerUpdates.LastName
, MaritalStatus = stgDimCustomerUpdates.MaritalStatus
, MiddleName = stgDimCustomerUpdates.MiddleName
, NumberCarsOwned = stgDimCustomerUpdates.NumberCarsOwned
, NumberChildrenAtHome =
stgDimCustomerUpdates.NumberChildrenAtHome
, Phone = stgDimCustomerUpdates.Phone
, Suffix = stgDimCustomerUpdates.Suffix
, Title = stgDimCustomerUpdates.Title
, TotalChildren = stgDimCustomerUpdates.TotalChildren
FROM dbo.DimCustomer DimCustomer
INNER JOIN dbo.stgDimCustomerUpdates
ON DimCustomer.CustomerAlternateKey
= stgDimCustomerUpdates.CustomerAlternateKey
10. Haga clic en OK en el cuadro de diálogo Execute SQL Task Editor, a continuación,
guarde el paquete. En la siguiente lección, se completara la parte del Data Flow de
este paquete y luego probaremos la ejecución.

22 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Comprobación rápida
1. ¿Cuál es la diferencia entre una tarea Control Flow y un contenedor Control Flow?
2. Para ejecutar un procedimiento almacenado en una base de datos SQL Server, ¿Qué
tarea debería elegir?
Respuestas de comprobación rápida
1. La tarea Control Flow realiza operaciones, mientras que los contenedores coordinan y
agrupan tareas. Por ejemplo, un contenedor Foreach Loop puede recorrer los
archivos en un sistema de carpetas, y una Tarea File System integrada dentro de un
contenedor puede mover los archivos a una nueva ubicación de carpeta.
2. La tarea Execute SQL puede ejecutar un procedimiento almacenado en SQL Server o
cualquier base de datos relacional, para cualquier proveedor de datos que se tenga
instalado. La sintaxis de las sentencias ingresadas en la tarea Execute SQL estarán
en lenguaje nativo de la base de datos utilizada.

Lección 3: Usando adaptadores Data Flow y transformaciones


La Lección 2, "Creación y edición de objetos Control Flow", mostró cómo usar las tareas
Control Flow y contenedores. Una de las tareas Control Flow más valioso es la tarea Data
Flow. Un paquete puede tener cero, uno o más Data Flow. Para trabajar con la tarea Data
Flow, puede arrastrar una tarea Data Flow de la Toolbox Control Flow hacia el espacio de
trabajo y hacer doble clic en él, o puede hacer clic en la ficha Data Flow en el Diseñador
SSIS. Después de hacer clic en la ficha Data Flow, aparece el diseñador Data Flow,
donde se puede utilizar el flujo de datos para manipular y transformar los datasets. La
tarea Data Flow tiene tres tipos de objetos en la Toolbox:
 Adaptadores de origenes Data Flow
 Adaptadores de transformaciones Data Flow
 Adaptadores de destinos Data Flow
La Figura 1-20 muestra la ficha Data Flow con la Toolbox abierta, destacando los
origenes Data Flow y algunas transformaciones Data Flow. Observe la diferencia entre
los elementos Toolbox Control Flow y los elementos Toolbox Data Flow.

Figura 1-20
En esta lección, se verán los detalles de los adaptadores de origen y destino, así como
de las transformaciones.
Definiendo adaptadores de origen Data Flow
Los adaptadores de origen Data Flow utilizan conexiones de paquete, que apuntan a la
instancia del servidor o ubicación del archivo de la data source. (La única excepción es el
adaptador Raw File, que no utiliza una conexión de paquetes). Un adaptador de origen
extrae datos de origen y los mueve dentro del data flow, donde será modificado y enviado

23 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
a un destino. Se crearan adaptadores de origen data flow arrastrando un adaptador de
origen de la Toolbox Data Flow hasta la ficha Data Flow en el Diseñador SSIS. La Tabla
describe las diferentes fuentes de flujos de datos y sus usos.
Tabla 1-3. Origenes Data Flow y sus Usos
FUENTE DATA FLOW PROPOSITO
Proporciona conexiones a las tablas o consultas a través de un proveedor
Fuente ADO.NET
ADO.NET.
Fuente Excel Permite extracciones de una hoja de trabajo Excel, definida en un archivo Excel.
Se conecta a un archivo delimitado o de ancho fijo, creado con diferentes
Fuente Flat File
páginas de código.
Se conecta a los proveedores OLE DB instalados, tales como SQL Server,
Fuente OLE DB
Access, SSAS y Oracle.
Almacena datos nativos SSIS en tipo de archivo binario, usado para staging de
Fuente Raw File
datos.
Permiten que los datos en bruto se extraigan de un archivo XML, requieren de
Fuente XML
un esquema XML para definir las asociaciones de datos.
A modo de ejemplo, la Figura 1-21 muestra la caja de dialogo OLE DB Source Editor
para un paquete que está extrayendo datos de la tabla [Sales].[SpecialOffer] de la base
de datos AdventureWorks2008R2, con la intención de cargarla en la tabla DimPromotion
en AdventureWorksDW2008R2.

Figura 1-21
El adaptador de origen OLE DB es similar al adaptador ADO.NET, en que requiere un
administrador de conexión y tambien una tabla debe ser seleccionada o una consulta
debe ser escrita. En este ejemplo, la lista desplegable Data access mode está
configurada a Table or view, y la tabla [Sales].[SpecialOffer] esta seleccionada. Si Data
access mode estuviera configurada a SQL Command, podría entrar una consulta para el
origen.
Creación de Destinos Data Flow
Los destinos data flow son similares a los origenes en que utilizan conexiones de
paquetes. Sin embargo, los destinos son los extremos finales en un paquete, definiendo
la ubicación en la que los datos deben ser colocados. Por ejemplo, si está enviando datos
a un archivo Excel desde una tabla de base de datos, su destino será un adaptador Excel
Destination.
TEMAS CLAVE
Muchos objetos SSIS tienen una propiedad ValidateExternalMetadata que puede
establecerse a False si el objeto referenciado (como una tabla) no existe cuando el
paquete está siendo diseñado. Esta propiedad es generalmente utilizada para los

24 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
adaptadores de origen o de destino, como cuando una tabla de destino es creada durante
la ejecución del paquete.
Todos los adaptadores de origen se enlazan a los adaptadores de destino en el flujo de
datos SSIS. Y hay otros adaptadores de destino que le permiten enviar datos a más
destinos inclusive. La Tabla enumera los adaptadores de destino data flow SSIS.
Tabla 1-4. Destino Data Flow y sus Usos
DESTINO DATA FLOW PROPOSITO
Permite la inserción de datos mediante un proveedor administrado
Destino ADO.NET
ADO.NET.
Permite pasar datos del data flow a un modelo de minería de datos en
Data Mining Model Training
SSAS.
Le permite poner los datos en un recordset ADO.NET que puede ser
Destino DataReader
referenciada, mediante programación.
Permite a las dimensiones SSAS, ser procesadasdirectamente, desde los
Dimension Processing
datos que fluyen a través del flujo de datos.
Destino Excel Se utiliza para insertar datos en Excel, incluyendo Excel 2010.
Permite la inserción de datos a un archivo plano, tal como un archivo
Destino Flat File
delimitado por comas o delimitado por tabulaciones.
Utiliza el proveedor OLE DB para insertar filas a un sistema de destino,
Destino OLE DB
que permite una conexión OLE DB.
Permite que particiones SSAS sean procesadas directamente, desde los
Partition Processing
datos que fluyen a través del flujo de datos.
Almacena datos nativos SSIS en un tipo de archivo binario, usado para
Destino RawFile
staging de datos.
Toma los datos del flujo de datos y crea un recordset en una variable de
Destino Recordset
paquete de tipo object.
Destino SQL Server Compact Le permite enviar datos a un dispositivo móvil, que ejecute SQL Mobile.
Proporciona un destino específico de alta velocidad a SQL Server 2008, si
Destino SQL Server
el paquete se está ejecutando en SQL Server.

TEMAS CLAVE
Se puede configurar el adaptador de destino OLE DB para insertar datos de los data flow
a través de lotes masivos de datos, en lugar de una fila a la vez. Para utilizar esta técnica
de optimización de destino, modifique el destino OLE DB y establezca el Data access
mode a Table or view – fast load. Cuando el destino OLE DB no está configurado con
carga rápida, sólo una fila a la vez se inserta en la tabla de destino.
La Figura 1-22 muestra un data flow simple con una fuente y un destino. El flujo de datos
extrae registros de la tabla Sales.SpecialOffer de AdventureWorks2008R2 y los inserta en
la tabla DimPromotion de AdventureWorksDW2008R2.

Figura 1-22
Al igual que en el origen, el adaptador de destino requiere configuración, tanto en la
conexión como en la tabla, en la que las filas se insertan; así como en la asignación de
las columnas de flujo de datos, a las columnas de la tabla de destino. La Figura 1-23
muestra el OLE DB Destination Editor, para el ejemplo anterior.

25 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-23
Note que el destino OLE DB utiliza la conexión AdventureWorksDW2008R2 y está
configurado por defecto para utilizar la opción Table or view – fast load de la lista
desplegable Data access mode. Esto significa que los registros serán procesados con las
sentencias de inserción masiva en lugar de una fila a la vez.
La Figura 1-24 muestra la ficha Mappings del mismo OLE DB Destination Editor. Aquí es
donde se puede asignar columnas disponibles del flujo de datos a las columnas de
destino en el adaptador de destino. Todos los adaptadores de destino tienen una ficha
Mappings.

Figura 1-24
Tenga en cuenta que no todas las columnas se asignan. Sin embargo, si una de las
columnas de destino sin asignar, se marca como NOT NULL, el destino del paquete falla
cuando se ejecuta. En la sección titulada "Usando Transformaciones" más adelante en
esta lección, verá cómo utilizar la transformación Slowly Changing Dimension para
manejar los nuevos registros y actualizaciones.
Trabajando con Transformaciones Data Flow
Las transformaciones le dan la capacidad de modificar y manipular los datos en el flujo de
datos. Una transformación realiza una operación, ya sea en una fila de datos a la vez o
en varias filas de datos a la vez.

26 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Al igual que con los adaptadores de origen y destino, arrastre las transformaciones de la
caja de la Toolbox data flow a la ficha Data Flow del Diseñador SSIS, y edítelos haciendo
clic derecho en la transformación que desea cambiar y dándole clic en Edit. Se conectan
orígenes, transformaciones y destinos a través de las rutas de datos, que se crean
arrastrando la flecha de salida a otro componente en el Data Flow. Las flechas verdes de
ruta de datos, son para las filas que se transformaron con éxito; y las flechas rojas de ruta
de salida son, para las filas en que falló la transformación, debido a un error, debido a un
truncamiento o a un error de conversión. La Figura 1-25 muestra un flujo de datos que
conecta un origen a varias transformaciones a través de rutas de datos y finalmente a un
destino.

Figura 1-25
Seleccionando transformaciones
Las Transformaciones realizan una amplia variedad de operaciones en los datos
referenciados, y la transformación que elija depende de sus necesidades de
procesamiento de datos. Algunas transformaciones operan de manera similar a otras
transformaciones, por lo tanto, podemos clasificarlos en grupos naturales de
componentes parecidos.
TRANSFORMACIONES DE LOGICA A NIVEL DE FILA
Las transformaciones más comunes y de fácil configuración realizan operaciones en las
filas sin necesidad de otras filas del origen. Estas transformaciones, que, lógicamente,
trabajan a nivel de fila, a menudo se desempeñan muy bien. La Tabla enumera las
transformaciones de lógica a nivel de fila.
Algunos de los usos comunes de estas transformaciones incluyen la realización de
cálculos matemáticos, la conversión de un valor de texto a un tipo de datos numérico o
decimal, el reemplazo de valores NULL con otros valores. Debido a que la transformación
Import Column y Export Column trabajan con tipos de datos binarios grandes, estas dos
transformaciones llevan una mayor carga de trabajo.
Tabla 1-5. Transformaciones de Lógica a Nivel de Fila
TRANSFORMACION DATA
PROPOSITO
FLOW
Agrega columnas adicionales a cada fila, en función de variables de sistema a
Audit
nivel de paquete, como ExecutionStartTime y PackageName.
Permite que datos que se usarán en una transformación Lookup estén en caché
Transformación Cache
y disponibles para múltiples componentes Lookup.
Realiza operaciones comunes de texto, tal como Uppercase, y permite
Character Map
operaciones de conversión bit, de lingüística avanzada.

27 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Copy Column Duplica valores de columna en cada fila a nuevos nombres de columna.
Crea nuevas columnas en cada fila, en función de nuevos tipos de datos
Data Conversion
convertidos, de otras columnas; por ejemplo, la conversión de texto a numérico.
Utiliza el lenguaje SSIS Expression para realizar cálculos en el sitio, sobre los
Derived Column valores existentes; alternativamente, permite la adición de nuevas columnas
basadas en expresiones y cálculos de otras columnas y variables.
Exporta columnas de objetos binarios grandes (BLOB), una fila a la vez, a un
Export Column
archivo.
Carga archivos binarios como imágenes en la pipeline, hacia un destino de tipo
Import Column
de datos BLOB.
Rastrea el número de filas que fluyen a través de la transformación y almacena
Row Count
el número en una variable de paquete, después de la última fila.

TRANSFORMACIONES DE ENTRADAS O DE SALIDAS MULTIPLES


Las transformaciones de múltiples entradas y múltiples salidas pueden trabajar con más
de una entrada de datos o pueden generar más de una salida, respectivamente. Estas
transformaciones proporcionan la capacidad para combinar o ramificar datos y darle al
flujo de datos la capacidad total de procesar datos de una o más fuentes a uno o más
destinos. En la Tabla se enumeran las transformaciones de entrada múltiple y salida
múltiple.
Tabla 1-6. Transformaciones de Entrada Multiple y Salida Multiple
TRANSFORMACION DATA
PROPOSITO
FLOW
Enruta o filtra los datos basados en expresiones booleanas a una o más salidas,
Conditional Split
de tal modo que cada fila es enviada, a sólo una ruta de salida.
Permite enlazar los valores de columnas pipeline a las tablas de base de datos
Lookup externas; columnas adicionales se pueden agregar a los data flow de la tabla
externa.
Combina las filas de dos entradas similares ordenadas, uno sobre la otra, sobre
Merge
la base de una llave de ordenación definida.
Une las filas de dos entradas ordenadas sobre la base de columna(s) de unión
Merge Join
definidas, agregando columnas de cada fuente.
Genera una o más salidas idénticas, de la que cada fila es enviada a cada
Multicast
salida.
Combina una o más entradas similares, apilando una fila encima de otra,
Union All
basada en columnas enlazadas.
Así como la Tabla describe, que las transformaciones Merge y Merge Join requieren
entradas ordenadas. Cuando estos componentes se utilizan en un data flow, la
transformación espera por filas de cualquier entrada, en base en el orden definido, para
preservar la salida ordenada o enlazar a través de las filas ordenadas, lo que significa
que las filas no pueden ser enviadas inmediatamente a la ruta de salida.
TEMAS CLAVE
Cuando tratamos de determinar que transformación usar que traiga más de un origen de
datos, recuerde que la transformación Merge Join trae dos origenes ordenadas juntas y
enlaza filas juntas; con un Inner Join, un Full Outer Join, o un Left Outer Join. Merge Join
puede enlazar más de una fila a través de las columnas de unión. Este comportamiento
es diferente al de la transformación Lookup, que retorna sólo un único enlace a través de
las columnas de unión de la tabla Lookup. La transformación Unión All no junta las filas a
la vez, sino que trae cada fila por separado de los origenes, apilando las filas juntas. El
número de filas en la salida Unión All es el número de filas combinadas de todas las
entradas. La transformación Merge es similar a Unión All, excepto que las fuentes tienen
que ser ordenados y la posición de orden se mantiene.

TRANSFORMACIONES DE MULTIPLES FILAS

28 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Algunas transformaciones realizan un trabajo basado en criterios de filas de entrada
multiples o generan múltiples filas de salida, de una fila de entrada única. Estas
transformaciones pueden ser más exigentes en la sobrecarga de la operación y la
memoria, pero proporcionan valiosas funciones para satisfacer las necesidades del
negocio. La Tabla enumera las transformaciones de múltiples filas.
Tabla 1-7. Transformaciones de Multiples Filas
TRANSFORMACION DATA
PROPOSITO
FLOW
Asocia registros basados en agrupaciones definidas, y genera agregaciones,
Aggregate
tales como SUM, MAX, MIN y COUNT.
Filtra las filas de entrada al permitir que sólo un porcentaje definido, pase a la
Percent Sampling
ruta de salida.
Toma varias filas de entrada y pivotean las filas para generar una salida con
Pivot
más columnas, basadas en los valores de fila original.
Salida de un número de filas fijo, muestrea los datos de toda la entrada, no
Row Sampling
importa que tan grande sea la salida definida, respecto a la entrada.
Ordenar la entrada basada en columnas de orden definido y dirección de
Sort ordenamiento y permite la eliminación de duplicados, en las columnas
ordenadas.
Toma una sola fila y varias salidas de filas, pasando los valores de columna a la
Unpivot
fila nueva basada en las columnas definidas.
En los casos de transformaciones Sort, Aggregate, y Row Sampling, todas las filas de
entrada se bloquean, lo que les permite realizar el trabajo antes de enviar las filas a la
ruta de salida. Estas transformaciones a menudo requieren más recursos del servidor,
memoria y capacidad de procesamiento que otras transformaciones.
Transformaciones de preparación de datos Avanzadas
El último grupo de transformaciones le permite realizar operaciones avanzadas en las
filas de la pipeline de flujo de datos. La Tabla lista estas transformaciones avanzadas de
preparación de datos.
Tabla 1-8. Transformaciones de Preparacion de Datos Avanzadas
TRANSFORMACION DATA
PROPOSITO
FLOW
Realiza operaciones de base de datos, tales como actualizaciones y
OLE DB Command eliminaciones, una fila a la vez, sobre la base de parámetros asignados a las
filas de entrada.
Procesa los cambios de dimensión, incluyendo el rastreo de la historia de la
Slowly Changing dimensión y la actualización de los valores de dimensión. La transformación
Dimension Slowly Changing Dimensión maneja estos tipos comunes de dimensiones de
cambio: Historical Attributes, Fixed Attributes y Changing Attributes.
Data Mining Query Aplica las filas de entrada con un modelo de minería de datos para predicción.
Asocia valores de columna con un conjunto de filas basado en la semejanza,
Fuzzy Grouping
para limpieza de datos.
Junta una entrada de flujo de datos a una tabla de referencia basada en la
similitud de la columna. La configuración de umbral de similitud indica la
Fuzzy Lookup
cercanía de los enlaces permitidos, un alto valor significa que los valores
enlazados están más cerca de la similitud.
Proporciona capacidades de scripting VB.NET en las filas, columnas, entradas y
Script Component
salidas de la pipeline de flujo de datos.
Análiza las columnas de entrada de texto para sustantivos de ingles y
Term Extraction
sustantivos de frases.
Análiza las columnas de entrada de texto, frente a un conjunto definido por el
Term Lookup
usuario, de palabras para asociación.

29 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
CASOS REALES
La mayoría de las empresas tienen numerosos sistemas que albergan, todo tipo de datos
de sistemas transaccionales, de ventas, recursos humanos, aplicaciones de negocios
personalizados. Muchos de estos sistemas aún se ejecutan en plataformas de bases de
datos diferentes, tales como SQL Server, Oracle, DB2, o sistemas pasados que no se
venden más. La complejidad de los datos dentro de las organizaciones va más allá de la
base de datos relacional de la empresa, a menudo incluyen archivos de Excel y
aplicaciones departamentales de Access. Navegar a través de estos sistemas puede ser
muy difícil, por no decir imposible.
SSIS ofrece beneficios reales en estas situaciones, ya que le ayuda a consolidar los
datos eficientemente.
La tarea consistiría por ejemplo, en simplificar un proceso complicado que involucre a
cinco diferentes fuentes de datos. Dos en SQL Server, una en Oracle, otra en Excel, y la
última en un archivo plano binario grande creado a partir de un sistema IBM AS/400.
Antes de rediseñar el procesamiento de estos datos, la operación requeriría un trabajo
nocturno de unas 7,5 horas. El trabajo incluiría un proceso por lotes para convertir el
archivo binario AS/400 a ASCII, y el trabajo de extraer datos de Oracle y de Excel a un
entorno staging en SQL Server y a través de un procedimiento almacenado bastante
grande. Lógica personalizada de unión de datos (numeración de millones de filas) a
través de servidores, mediante servidores enlazados y almacenando los datos en cerca
de 15 tablas staging antes de que el producto final esté listo. ¿Suena familiar?
El rediseño SSIS redujo muchas de las complejidades, porque se podía extraer datos de
estos origenes directamente en el data flow en SSIS y unirse a los origenes de distinto
tipo. También es capaz de convertir la compleja lógica T-SQL, relacionada a las tablas
staging a una serie de transformaciones y reducir enormemente el uso de disco de E/S
pasando de 15 a 3 tablas staging.
El resultado neto fue de tres paquetes SSIS que se ejecutaria en 25 minutos. Lo que
genera una ganancia de tiempo. Además, el uso de SSIS redujo gastos de hardware y
gestión del proceso antiguo, que permite a los profesionales TI de la empresa,
aprovechar mucho más el tiempo, que ellos no pensaban que podrían recuperar.
Usando Transformaciones
Cada transformación tiene una ventana de edición para definir la forma en que la
operación es aplicada a los datos. Por ejemplo, la transformación Derived Column
establece una expresión que genera una nueva columna en el data flow o sustituye una
columna existente. Para abrir el Editor de Transformación, haga doble clic en la
transformación o de clic derecho a la transformación y luego clic en Edit. La Figura
siguiente muestra el Derived Columns Transformation Editor.
En el ejemplo de Derived Column en la Figura 1-26, una de las nuevas columnas que se
adiciona al flujo de datos se denomina FullName, que se basa en la concatenación de la
columna FirstName y la columna LastName usando la expresión SSIS siguiente:
[FirstName] + " " + [LastName]

30 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-26
Otras transformaciones contienen una funcionalidad similar. Cada transformación tiene
un editor específico a la operación elegida.
El siguiente ejemplo utiliza la transformación Slowly Changing en el paquete
DimPromotion para identificar nuevos registros en comparación con los registros
actualizados. La Figura 1-27, muestra el data flow resultante.

Figura 1-27
La Figura 1-27, muestra el resultado de la transformación Slowly Changing Dimension.
Todas las transformaciones y los destinos resultantes fueron creados por el Slowly
Changing Dimension Wizard, que construyó el resto del flujo de datos.
La Figura 1-28, muestra la pagina Slowly Changing Dimension Columns del asistente,
que define que columnas de dimensión, deben causar que tipo de cambio a la salida. Las
opciones son Fixed Attribute, que significa que el cambio no debería ocurrir; Changing
Attribute, que significa que se produce una actualización; o Historical Attribute, que
significa que el cambio crea un nuevo registro.

31 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-28
PRACTICA: Creando Data Flow Simples y Complejos
Estos ejercicios se dirigirán a la creación de data flows que incluyen los origenes,
destinos y uno o más transformaciones. Empezara con un data flow bastante simple, para
luego construir data flows más complejos.
EJERCICIO 1: Crear un Data Flow simple
En este ejercicio, se desarrollará un flujo de datos simple que contiene un adaptador
origen, una transformación Aggregate, y un adaptador destino.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS que creó en la lección 2, "Creación y edición de
objetos Control Flow", a continuación, abra el paquete MyPackage.dtsx para su
edición.
2. En la ficha Control Flow del Diseñador SSIS, arrastre una tarea Data Flow de la caja
de herramientas dentro del objeto Sequence Container. El objeto Sequence Container
debe incluir ahora una tarea Execute SQL denominada Actualizar ProductLine y un
objeto de tarea Data Flow.
3. Arrastre la flecha de salida de la tarea Actualizar ProductLine hasta el objeto de la
tarea de Data Flow. La flecha de salida es verde, y significa que representa una
restricción de precedencia; véase el Capítulo 3 para obtener más información acerca
de las restricciones de precedencia.
4. Haga clic en la ficha Data Flow en la parte superior del Diseñador SSIS.
5. En el cuadro de herramientas, arrastre un origen OLE DB, ubicada bajo del grupo de
origenes Data Flow, al espacio de trabajo Data Flow. Haga clic derecho en el
elemento fuente OLE DB y, a continuación, haga clic en Edit para abrir el cuadro de
diálogo OLE DB Source Editor.
6. Seleccione AdventureWorks2008R2 en la lista OLE DB connection manager y, a
continuación, haga clic en OK.
7. De la lista desplegable Data access mode, seleccione SQL Command.
8. En el cuadro de texto SQL Command, escriba la siguiente consulta (archivo SQL:
Consulta_SQLCommand):
SELECT SH.OrderDate, SD.LineTotal, P.ProductLine
FROM Sales.SalesOrderHeader SH
INNER JOIN Sales.SalesOrderDetail SD
ON SH.SalesOrderID = SD.SalesOrderID
INNER JOIN Production.Product P
ON SD.ProductID = P.ProductID

32 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
9. Haga clic en la pestaña Columns a la izquierda, a continuación, compruebe que las
columnas OrderDate, LineTotal, y ProductLine se muestran como columnas
disponibles en el adaptador de fuente.
10. Haga clic en OK en el cuadro de diálogo OLE DB Source Editor.
11. Desde la caja de herramientas Data Flow, arrastre una transformación Aggregate a la
superficie de diseño Data Flow, justo debajo del adaptador fuente OLE DB.
12. Vincular la salida de la fuente OLE DB con la transformación Aggregate arrastrando la
flecha verde de salida hacia la transformación Aggregate.
13. Editar la transformación Aggregate haciendo doble clic o darle clic derecho y, a
continuación clic en Edit.
a. En el cuadro de diálogo Aggregate Transformation Editor, seleccione OrderDate
de la lista desplegable Input Column, y luego, compruebe que la operación Group
By esta seleccionada por defecto para la nueva fila.
b. Agregue una segunda fila Input Column mediante la selección de la columna
LineTotal de la lista desplegable. Para la columna Operation de la recientemente
agregada LineTotal, seleccione Sum de la lista. Y por ultimo escriba SubTotal, en
la columna Output Alias para la fila LineTotal.
c. Agregue una tercera fila Input Column seleccionando la columna ProductLine de
la lista.
d. Compruebe que la operación Group By se ha seleccionado por defecto para la
nueva fila.
e. Haga clic en OK en el cuadro de diálogo Aggregate Transformation Editor.
14. En el cuadro de herramientas Data Flow, vaya al grupo de objetos destino Data Flow,
y arrastre el objeto destino OLE DB sobre la superficie de diseño Data Flow.
15. Conecte la salida de la transformación Aggregate al nuevo objeto OLE DB Destination
arrastrando la flecha de salida de la transformación Aggregate hasta el adaptador
OLE DB Destination.
16. Haga clic derecho en el adaptador OLE DB Destination, a continuación, haga clic en
Edit para visualizar el cuadro de dialogo OLE DB Destination Editor.
a. En el cuadro de dialogo OLE DB Destination Editor, compruebe que la lista
desplegable OLE DB connection manager este en AdventureWorks2008R2.
b. Haga clic en el botón New cerca a la lista desplegable Name of the table or the
view.
c. En el cuadro de diálogo Create Table, cambiar el nombre de la nueva tabla a
Sales_Summary. El código listado CREATE TABLE en la ventana, debería ser
similar al siguiente:
CREATE TABLE [Sales_Summary] (
[OrderDate] DATETIME,
[SubTotal] NUMERIC (38,6),
[ProductLine] NVARCHAR(2)
) ON [PRIMARY]
d. Haga click en OK en el cuadro de diálogo Create Table.
e. En la ficha Mappings del cuadro de diálogo OLE Destination Editor, asegúrese de
que las columnas estén todas asignadas del origen al destino.
f. Haga clic en OK para guardar la configuración.
La Figura 1-29, muestra el Data Flow completo.

33 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-29
17. Haga clic derecho en la superficie de diseño Data Flow, y, luego haga clic en la tarea
Execute task. Observe la ejecución del data flow para confirmar el éxito de este
ejercicio.
18. Haga clic en el botón Stop Debugging en la barra de herramientas, para detener el
depurador (o seleccione Debug, Stop Debugging en el menú Debug).
19. Haga clic en el botón Save All en la barra de herramientas BIDS.
EJERCICIO 2: Crear un destino Data Flow
En este ejercicio, creará un data flow que carga nuevos registros en la tabla
DimCustomer de la base de datos AdventureWorksDW2008R2 y que realiza las
actualizaciones de los registros existentes.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS, a continuación, abra el paquete
DimCustomer.dtsx para su edición. Su paquete DimCustomer.dtsx debería contener
una tarea Execute SQL llamado Truncate Update Table, un objeto de tarea Data
Flow, y una segunda tarea Execute SQL llamado Batch Updates que se creó en la
Lección 2.
2. Haga clic en la ficha Data Flow en la parte superior del Diseñador SSIS para dirigirse
hasta la superficie de diseño Data Flow.
3. Arrastre un adaptador de origen OLE DB de la caja de herramientas a la superficie de
diseño. Renombre el adaptador de origen OLE DB a Origen Cliente. Edite el
adaptador de origen y configure las siguientes propiedades como se muestra (archivo
SQL: Consulta_OrigenCliente):
OLE DB connection manager AdventureWorks2008R2
Data access mode SQL Command
SQL Command Text select convert(nvarchar(15),SC.
AccountNumber) as CustomerAlternateKey,
C.Title, C.FirstName, C.MiddleName,
C.LastName, C.Suffix, C.EmailAddress,
C.AddressLine1, C.AddressLine2,
D.BirthDate, D.MaritalStatus,
D.YearlyIncome, D.DateFirstPurchase,
D.Gender, D.TotalChildren,
D.NumberChildrenAtHome, D.Education,
D.Occupation, D.HomeOwnerFlag,
D.NumberCarsOwned
from Sales.vIndividualCustomer C
inner join Sales.Customer SC
on C.BusinessEntityID = SC.PersonID
inner join Sales.vPersonDemographics D
on C.BusinessEntityID =
D.BusinessEntityID
4. Arrastre un segundo adaptador origen OLE DB de la Toolbox, en la superficie de
diseño del data flow, cambie el nombre a Dim Cliente, y luego edítelo. Edite el
adaptador de origen y configure las siguientes propiedades como se muestra:

34 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
OLE DB connection manager AdventureWorksDW2008R2
Data access mode Table or view
Name of the table or view [dbo].[DimCustomer]

5. Lo siguiente será ordenar los datos de las fuentes, con respecto a la clave del
negocio. En primer lugar, arrastre dos transformaciones Sort del cuadro de
herramientas Data Flow a la superficie de diseño Data Flow, y luego conecte la flecha
de salida del adaptador Origen Cliente a la primera transformación Sort y la de Dim
Cliente a la segunda transformación Sort, como muestra la Figura 1-30.

Figura 1-30
6. Edite la primera transformación Sort y seleccione la casilla de verificación en el lado
izquierdo de la columna CustomerAlternateKey en la Available Input Columns. Haga
clic en OK para guardar la transformación.
7. Edite la segunda transformación Sort y seleccione la casilla de verificación en el lado
izquierdo de la columna CustomerAlternateKey en la Available Input Columns. Haga
clic en OK para guardar la transformación.
8. De la Toolbox Data Flow, arrastre una transformación Merge Join a la superficie de
diseño, a continuación, conecte la flecha de salida de la primera transformación Sort
(procedente de Origen Cliente) a la transformación Merge Join. Cuando aparezca la
caja de dialogo Input Output Selection, elija Merge Join Left Input de la lista
desplegable Input y, a continuación, haga clic en OK.
9. También conecte la flecha de salida de la segunda transformación Sort (procedente
de Dim Cliente) a la transformación Merge Join.
10. Editar la transformación Merge Join para mostrar el cuadro de dialogo Merge Join
Transformation Editor.
a. Cambiar la configuración en la lista desplegable Join Type a Left Outer Join, el
cual cargara todas las filas de origen de la consulta Origen Cliente (el origen de la
izquierda de la Transformación Merge Join) y las filas coincidentes del lado
derecho (que es de la fuente dbo.DimCustomer).
b. Para retornar todas las columnas de la consulta Origen Cliente, seleccione la
casilla de verificación que está a la izquierda de la columna de cabecera Name en
la lista Sort de la izquierda. Al hacer esto seleccionará todas las casillas de
verificación de cada columna que es el resultado deseado.
c. En la lista de la derecha de columnas del Dim Cliente, seleccione sólo la casilla de
verificación junto a la columna CustomerAlternateKey.
d. Desplácese hacia abajo por la lista Output Columns a la parte inferior del cuadro
de dialogo Merge Join Transformation Editor hasta el final, y para la columna
CustomerAlternateKey, cambie el valor de Output Alias a
Dim_CustomerAlternateKey.
e. Haga clic en OK para guardar los cambios a la transformación Merge Join.
11. Desde la Toolbox Data Flow, arrastre una transformación Conditional Split a la
superficie de diseño Data Fow, y luego conecte la flecha de salida de la
transformación Merge Join a la transformación Conditional Split.
12. Edite la Transformación Conditional Split para mostrar el caja de dialogo Conditional
Split Transformation Editor.
a. Crear una nueva salida escribiendo Nuevos Registros en el cuadro Output Name
para la primera fila de la lista de salida.

35 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
b. En la misma fila de la lista de salida, escriba el código siguiente en el campo
Condition:
ISNULL ([Dim_CustomerAlternateKey]) == TRUE
c. En la caja Default Output Name, cambie el valor de Conditional Split Default
Output a Actualizar Registros.
d. Haga clic en OK para guardar los cambios en el cuadro de dialogo Conditional
Split Transformation Editor.
13. Desde la Toolbox Data Flow, arrastre un adaptador de destino OLE DB a la superficie
de diseño Data Flow (asegúrese de no arrastrar el adaptador de origen similar, sino el
adaptador de destino), y luego cambiar su nombre a Tabla DimCustomer.
14. Arrastre la flecha de salida de la Transformación Conditional Split a este nuevo
adaptador destino OLE DB. Cuando se solicite en el cuadro de diálogo Input Output
Selection, seleccione Nuevos Registros de la lista desplegable Output y, a
continuación, haga clic en OK.
15. Haga clic derecho en el adaptador de destino Tabla DimCustomer que acaba de crear
y haga clic en Edit para mostrar el cuadro de dialogo OLE DB Destination Editor.
Establezca las siguientes propiedades en el cuadro de dialogo OLE DB Destination
Editor:
OLE DB connection manager AdventureWorksDW2008R2
Data access mode Table or view – fast load
Name of the table or view [dbo].[DimCustomer]

a. Mientras que estamos aún en el cuadro de dialogo OLE DB Destination Editor,


haga clic en la ficha Mappings en el area izquierda del cuadro de diálogo. Esto
asigna automáticamente las columnas del flujo de datos a la tabla DimCustomer
basada en el nombre de columna y el tipo de datos.
b. No todas las columnas se asignan. En la lista Available Input Columns, localice la
columna Education y arrastre a la parte superior de la columna EnglishEducation
de la lista Available Destination Columns. Haga lo mismo para Occupation a
EnglishOccupation y HomeOwnerFlag a HouseOwnerFlag.
c. Haga clic en OK para guardar los cambios en el cuadro de dialogo OLE DB
Destination Editor.
16. Agregue un segundo adaptador destino OLE DB a la superficie de diseño Data Flow
y, luego conecte otra flecha de salida de la transformación Conditional Split al nuevo
adaptador destino OLE DB. Renombre el adaptador de destino Tabla Update
DimCustomer.
17. Edite el adaptador de destino Tabla Update DimCustomer que acaba de crear para
mostrar el cuadro de dialogo OLE DB Destination Editor. Establezca las siguientes
propiedades en el cuadro de dialogo OLE DB Destination Editor:
OLE DB connection manager AdventureWorksDW2008R2
Data access mode Table or view – fast load
Name of the table or view [dbo].[stgDimCustomerUpdates]

a. Mientras que estamos aún en el cuadro de dialogo OLE DB Destination Editor,


haga clic en la ficha Mappings. Esto asigna automáticamente las columnas del
flujo de datos a la tabla DimCustomer basado en el nombre de columna y el tipo
de datos.
b. No todas las columnas se asignan. En la lista Available Input Columns, localice la
columna Educación y arrastre a la parte superior de la columna EnglishEducation
de la lista Available Destination Columns. Haga lo mismo para Occupation a
EnglishOccupation y HomeOwnerFlag a HouseOwnerFlag.

36 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
c. Haga clic en OK para guardar los cambios en el cuadro de dialogo OLE DB
Destination Editor.
Su data flow ahora debe ser similar a la que se muestra en la siguiente Figura 1-31.

Figura 1-31
18. Confirmar el correcto desarrollo de su paquete, ejecutando el paquete en BIDS.
19. Seleccione Debug, Stop Debugging del menú Debug para detener el depurador, y
a continuación, haga clic en el botón Save All en la barra de herramientas BIDS.
EJERCICIO 3: Cargando Dimensiones
En este ejercicio, aprenderá cómo usar la tarea Slowly Changing Dimension y su
asistente acompañante para cargar una nueva dimensión SpecialOffer. A continuación
se realizarán algunos cambios a los datos de origen, y verá cómo se aplican a la tabla de
dimensiones por medio de la tarea.
1. Ejecute la siguiente consulta en el Management Studio:
USE AdventureWorksDW2008R2
GO
IF(OBJECT_ID('[dbo].[DimSpecialOffer]')) IS NOT NULL
DROP TABLE [dbo].[DimSpecialOffer]
GO
CREATE TABLE [dbo].[DimSpecialOffer](
[SpecialOfferKey] [int] IDENTITY(1,1) NOT NULL
CONSTRAINT [PK_SpecialOffer_SpecialOfferKey] PRIMARY KEY
CLUSTERED ,
[SpecialOfferAlternateKey] [int] NULL,
[SpecialOfferDescription] [nvarchar](255) NULL,
[DiscountPct] [smallmoney] NULL,
[SpecialOfferType] [nvarchar](50) NULL,
[SpecialOfferCategory] [nvarchar](50) NULL,
[StartDate] [datetime] NOT NULL,
[EndDate] [datetime] NULL,
[MinQty] [int] NULL,
[MaxQty] [int] NULL,
EffectiveDate datetime NOT NULL,
ExpirationDate datetime NULL
)
2. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS, a continuación, abra el paquete
DimPromotion.dtsx para su edición.
3. Asegúrese de que la ficha Control Flow este activa.
4. Haga clic derecho en Connection Manager de la ficha Control Flow y seleccione New
OLE DB Connection.

37 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
5. En la pantalla Connection Manager, escriba localhost en la lista desplegable llamada
"Server name" y escriba o seleccione AdventureWorks2008R2 en la lista
desplegable llamada" Select or enter database name".
6. Haga clic en OK dos veces.
7. Haga clic derecho en la conexión en el Connection Manager y seleccione Rename.
Cambie el nombre de la conexión a Origen.
8. Repita los pasos 5 a 8, pero en lugar de seleccionar AdventureWorks2008R2 como la
base de datos, seleccione AdventureWorksDW2008R2 y renómbrelo como Destino.
9. Arrastre una tarea Data Flow en la superficie de diseño Control Flow.
10. Haga clic en la ficha Data Flow.
11. Arrastrar un origen de datos OLE DB a la superficie de diseño Data Flow.
12. Haga doble clic en el origen de datos y seleccione Origen de la lista desplegable
llamada OLE DB Connection Manager.
13. Seleccione Sales.SpecialOffer de la lista desplegable llamada "Name of the table or
the view".
14. Haga clic en OK.
15. Arrastre una tarea Derived Column hasta el diseñador Data Flow.
16. Arrastre el conector de flujo de datos verde del origen a la tarea Derived Column.
17. Haga doble clic en la Derived Column.
18. En la columna llamada Derived Column seleccione Replace ‘MaxQty’.
19. En la columna denominada Expression pegue la siguiente expresión:
ISNULL(MaxQty) ? 0 : MaxQty
20. Haga clic en OK.
21. Arrastre una tarea Slowly Changing Dimension en la superficie de diseño Data Flow.
22. Arrastre el conector de flujo de datos verde de la tarea Derived Column a la tarea
Slowly Changing Dimensión.
23. Haga doble clic en la tarea Slowly Changing Dimension.
24. Haga clic en Next.
25. Seleccione Destino de la lista desplegable llamada Connection Manager.
26. Seleccione DimSpecialOffer de la lista desplegable llamada "Table or view".
27. Seleccione SpecialOfferID de la columna llamada "Input Columns", junto al valor
llamado SpecialOfferAlternateKey .
28. En la misma fila, seleccione "Business key" en la columna llamada "Key Type".
29. Seleccione Category de la columna llamada "Input Columns", al lado de la columna
llamada SpecialOfferCategory .
30. Seleccione Description de la columna llamada "Input Columns", al lado de la columna
llamada SpecialOfferDescription .
31. Seleccione Type de la columna llamada "Input Columns", al lado de la columna
SpecialOfferType. En este punto, la pantalla debe ser similar a la Figura 1-32.

38 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-32
32. Haga clic en Next.
33. En la pantalla Slowly Changing Dimension Columns (figura), establecer todas las
columnas a "Changing attribute”, excepto DiscountPct. Establecer DiscountPct a
"Historical attribute".
34. Haga clic en Next dos veces.
35. En la pantalla Historical Attribute Options (figura), seleccione el botón de opción
llamado "Use start and end dates to identify current and expired records”. La ventana
se vera como en la Figura 1-33.

Figura 1-33
36. En la lista desplegable llamada "Start date column" seleccione EffectiveDate.
37. En la lista desplegable llamada "End date column", seleccione ExpirationDate.
38. En la lista desplegable llamada "Variable to set date values", seleccione
System::StartTime. La ventana se vera como en la Figura 1-34.

39 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-34
39. Haga clic en Next.
40. En la pantalla Inferred Dimension Members desmarque la casilla "Enable inferred
member support".
41. Haga clic en Next.
42. Haga clic en Finish.
43. Haga clic en el paquete en Solution Explorer y seleccione Execute Package. Los
resultados se verán como en la Figura 1-35.

Figura 1-35
44. Ejecute la siguiente consulta en el Management Studio; para realizar cambios en los
datos de origen. Este script hará dos cambios Type 2 y un cambio Type 1:
USE AdventureWorks2008R2
GO
UPDATE Sales.SpecialOffer
SET DiscountPct = .10
WHERE SpecialOfferID = 2

UPDATE Sales.SpecialOffer
SET DiscountPct = .02
WHERE SpecialOfferID = 8

UPDATE Sales.SpecialOffer
SET Description = 'Volume Discount over 61'
WHERE SpecialOfferID = 6
45. Vuelva a ejecutar el paquete. Se dará cuenta de que una fila se envía a la ruta de
cambios de atributos y dos filas son enviadas a la ruta de históricos de atributos. El
área Data Flow se vera como en la Figura 1-36.

40 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-36
EJERCICIO 4: Origen Excel y Destino Archivo Flat
En este ejercicio, se configura una fuente Excel (Ms Excel 97-2003) para extraer datos de
inventario. Se va a utilizar una hoja de cálculo de Excel como origen
(Inventory_Worksheet.xls). Tambien se va a configurar un destino Flat File para traer los
datos de inventario del origen Excel al archivo de plano. La actualización SP2 para SQL
Server 2008R2, ya considera Ms Office 2007 (también acepta archivos de Ms Office
2010). Por lo que en el paso 8, se puede considerar el archivo Inventory_Worksheet.xlsx
y Microsoft Excel 2007 en la lista desplegable, del cuadro de dialogo Excel Connection
Manager.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS.
2. Para crear un nuevo paquete, haga clic en la carpeta SSIS Packages en el Solution
Explorer y, a continuación, haga clic en New SSIS Package. Esto crea un nuevo
objeto paquete llamado Package1.dtsx (el número depende de cuántos paquetes se
han creado) en la carpeta SSIS Package en el Solution Explorer.
3. Para renombrar el nuevo paquete, haga clic derecho en el paquete, y luego haga clic
en Rename. Renombre el paquete a ExtraerOffice. Cuando se le pida, haga clic en
Yes para renombrar el objeto paquete.
4. Asegúrese de que la ficha Control Flow este activa.
5. Arrastre una tarea Data Flow a la superfice de diseño Control Flow y renombrelo
como Extraer de Excel.
6. Arrastre un origen Excel en la superficie de diseño Data Flow y haga doble clic para
abrir el Excel Source Editor.
7. Clic en el botón New del Connection Manager. Se abrirá el cuadro de dialogo Excel
Connection Manager.
8. En el Excel file path, haga clic en Browse para seleccionar la ubicación
C:\SSIS\LibroSSIS\CodigoPLibroSSIS\Cap 01 donde se encuentra el archivo excel.
Una vez que ha seleccionado la hoja de cálculo; asegúrese de que la versión de
Microsoft Excel sea Excel 97-2003 y que la opción “First row has column names” este
seleccionada. La Figura 1-37, muestra cómo se verá la pantalla.

Figura 1-37

41 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
9. Regresando al Excel Source Editor después de crear el administrador de conexión,
seleccione Inventory_Worksheet en la lista desplegable Name of the Excel sheet y
haga clic en OK, como se muestra en la Figura 1-38.
10. Clic derecho en Connection Managers y renombrelo como Inventario.

Figura 1-38
11. Arrastre un destino Flat File a la superficie de diseño.
12. Conecte la flecha verde del origen Excel a su nuevo destino y dele doble clic en el
destino para abrir el editor del destino.
13. Por defecto, el destino asume que está utilizando la única Flat File Connection
Manager creada en el paquete. Sin embargo, en este caso, es necesario definir un
nuevo administrador de conexión, hacemos clic en el botón New junto al Flat File
Connection Manager.
14. Hacer el archivo delimitado por comas, encontrar una ubicación para guardar el
archivo en su ordenador y hacer clic en OK.
15. A la derecha de Connection manager name, escriba ListadoFlat.
16. Dar clic en Browse al lado de File Name, y buscar la carpeta donde se ubicara el
archivo plano; C:\SSIS\LibroSSIS\CodigoPLibroSSIS\Cap 01\ListaEmpleados.txt.
17. Dar clic en la casilla de seleccion Column names in the first data row y luego dar clic
en OK.
18. Regresando al Flat File Destination Editor, ir a la página Mappings para asegurarse
que todas las columnas estén asignadas apropiadamente, como se muestra en la
Figura 1-39. Luego hacer clic en OK.

Figura 1-39
42 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
19. Ejecute este Data Flow, dando clic derecho en el diseñador y seleccionando Execute
Task. La Figura 1-40, muestra los resultados.

Figura 1-40
IMPORTANTE
Si se presenta el error mostrado en la Figura 1-41, al ejecutar el Ejercicio 4, siga los
siguientes pasos.

Figura 1-41
Entre al menú Project, dele clic en PLibroSSIS Properties; como se muestra en la Figura
1-42.

Figura 1-42
En el cuadro de dialogo PLibroSSIS Property Pages, en el panel izquierdo, seleccione
Debugging, como en la Figura 1-43. En la lista desplegable a la derecha de
Run64BitRuntime, seleccione False.

43 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-43
EJERCICIO 5: Origen Access y Destino SQL Server
En este ejercicio, tenemos que el origen, será la tabla Clientes de la base de datos de
Access 2010, llamada LibroAccess.accdb. El destino de datos será una nueva base de
datos llamada LibroSSIS. Esta nueva base de datos será creada a través del Server
Explorer del entorno de desarrollo de Integration Services.
1. En el menú View, elija la opción Server Explorer. La ventana del Server Explorer se
abrirá en el lado izquierdo del entorno de desarrollo. Seleccione el nodo Data
Connections, haga clic derecho y elija Create New SQL Server Database; como se
muestra en la Figura 1-44.

Figura 1-44
2. En la ventana de creación de base de datos, ingrese la información que se muestra
en la Figura 1-45:

Figura 1-45
3. Pulse el botón OK. Esto creará la base de datos LibroSSIS.
4. Cierre el Server Explorer.
5. El primer paso es la definición de un Data Source. En el Solution Explorer, seleccione
el nodo Data Sources, dé click derecho y seleccione New Data Source; como en la
Figura 1-46:

44 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-46
6. Aparecerá la pantalla de bienvenida del asistente para la definición de orígenes de
datos (Data Source Wizard). Presione el botón Next. Aparecerá la ventana de
definición de conexiones con datos.
7. Para definir una nueva conexión de datos, presione el botón New. Aparecerá la
ventana del Connection Manager. Elija el conector “Native OLE DB\SQL Server
Native Client 10.0”, el servidor local y la base de datos LibroSSIS, como se muestra
en la Figura 1-47:

Figura 1-47
8. Presione el botón OK y a continuación, presione el botón Next. Aparecerá la ventana
final del asistente.
9. Presione el botón Finish para finalizar el asistente.
10. En el proyecto de Integration Services, agregue un nuevo Data Source que utilice el
proveedor Native OLE DB\Microsoft Office 12.0 Access Database Engine OLE DB
Provider. A la derecha de Server or file name, escriba la localización del archivo
Access; C:\SSIS\LibroSSIS\LibroAccess.accdb; en User name escriba admin y
Password déjelo en blanco; asegurese de que el checkbox Allow saving password
esté seleccionado. Dele clic en OK. Dele clic en Next dos veces y finalmente en
Finish; como en la Figura 1-48.

45 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-48
11. En el paquete “ExtraerOffice.dtsx” agregue un nuevo connection manager que
apunte hacia el Data Source LibroAcces que acaba de crear.
12. Igualmente agregue a ExtraerOffice.dtsx un connection manager que apunte hacia
el Data Source LibroSSIS.
13. El archivo Access “LibroAccess.accdb” contiene una tabla llamada “Clientes”, con los
siguientes datos; com se muestra en la Figura 1-49:

Figura 1-49
14. Arrastre una tarea Data Flow a la superfice de diseño Control Flow y renombrelo
como Extraer Clientes de Access.
15. Arrastre un origen OLE DB a la superficie de diseño Data Flow, renombrelo como
Clientes en Access y haga doble clic para abrir el OLE DB Source Editor.
16. Seleccionar LibroAccess de la lista desplegable, debajo de la etiqueta OLE DB
Connection Manager. Asimismo seleccione la tabla Clientes de la lista desplegable,
debajo de la etiqueta Name of the table or the view. Verificar las asignaciones, dando
clic en Mappings en el panel del lado izquierdo. Dar clic en OK.
17. La información de las columnas de texto en el archivo Access se encuentra
almacenada en formato internacional (UNICODE). En SQL Server, los tipos de datos
NCHAR, NVARCHAR, NVARCHAR(max) y NTEXT soportan este formato de texto.
Sin embargo, en este ejercicio la información del archivo Access será transferida a
una tabla con columnas CHAR y VARCHAR, que no soportan el formato UNICODE.
Por tanto, es necesario que los datos de Access pasen por una conversión de tipo
antes de ser copiados a SQL Server 2008 R2. La tarea Data Conversion permite

46 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
efectuar este tipo de operación. En el Data Flow Task “Extraer Clientes de Access”,
agregue desde el Toolbox una transformación llamada Data Conversion, y renombrelo
como Convertir a no-UNICODE. Finalmente, una la salida del OLE DB Source
“Clientes en Access” con la conversión “Convertir a no-UNICODE”; como se muestra
en la Figura 1-50.

Figura 1-50
18. Haga doble clic en “Convertir a no-UNICODE” para editar las propiedades de la
conversión de datos. Se abrirá el Data Conversion Transformation Editor. Esta
ventana muestra los inputs provenientes del origen “Clientes en Access”, y permite
efectuar conversiones de datos. En el panel inferior, configure las siguientes
propiedades para convertir las columnas de texto del Access a formato normal:
Input Column Output Alias Data Type Length
NomCliente NomCliente-noUNC String[DT_STR] 50
TelCliente TelCliente-noUNC String[DT_STR] 10
19. Esto significa que, al output proveniente de “Access Clientes”, se agregan dos
columnas adicionales llamadas NomCliente-noUNC y TelCliente-noUNC, que
contienen los datos transformados a cadena normal (string). Pulse el botón OK para
finalizar la edición del Data Conversion. La ventane se parece a la Figura 1-51

Figura 1-51
20. Desde el Toolbox, en la pestaña Data Flow Destinations, agregue un nuevo OLE DB
Destination, y renómbrelo como Tabla Clientes. Conecte la salida de “Convertir a no-
UNICODE” con “Tabla Clientes. El área Data Flow, se vera como en la Figura 1-52.

47 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-52
21. Haga un doble clic sobre el destino “Tabla Clientes” para abrir su ventana de
propiedades. Seleccione la opción Connection Manager del lado izquierdo de la
pantalla, y establezca los siguientes valores para las propiedades:
Opción Valor
OLE DB Connection Manager Seleccione LibroSSIS
Data Access Mode Table or view – Fast load
Name of the table or the view Pulse el botón New para crear una nueva tabla.
Escriba la siguiente sentencia SQL:
CREATE TABLE Clientes
(IdCliente Integer,
NombreCliente varchar(50),
TelefonoCliente varchar(10))
22. Seleccione la opción Mappings del lado izquierdo de la pantalla. Establezca los
siguientes mapeos entre las columnas de “Convertir a no-UNICODE” y el destino
“Tabla Clientes”; la ventana se verá, como en la Figura 1-53:
IdCliente IdCliente
NomCliente-noUNC NombreCliente
TelCliente-noUNC TelefonoCliente
Descripcion CiudadCliente

Figura 1-53
23. Pulse el botón OK para confirmar los cambios.
24. En el entorno de desarrollo, en el paquete “ExtraerOffice.dtsx”, se debe regresar a la
pestaña Control Flow. En el Toolbox, seleccione el ítem Execute SQL Task, y
arrástrelo sobre la ventana de diseño, encima de la tarea Data Flow “Extraer Clientes
de Access” y renombrelo como Borrar Datos; luego arrastre la flecha verde hacia la
tarea Data Flow. La pantalla debe quedar como en la Figura 1-54:

48 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-54
25. Haga doble clic sobre la tarea “Borrar Datos”. Se abrirá el editor de propiedades de la
tarea. Seleccione la propiedad Connection, y cambie su valor para que apunte hacia
la conexión “LibroSSIS”; como se muestra en la Figura 1-55.

Figura 1-55
26. A continuación, seleccione la propiedad SQLStatement, y presione el botón .
Escriba la siguiente sentencia SQL; en la ventana, similar a la Figura 1-56:

Figura 1-56
27. Pulse el botón OK para confirmar la sentencia escrita. Pulse nuevamente el botón OK
para aceptar los cambios en la tarea.
28. Grabe los cambios y ejecute el paquete. Al finalizar, efectúe una consulta sobre la
tabla “Clientes” en la base de datos LibroSSIS.
EJERCICIO 6: Limpieza de Datos con Fuzzy Lookup
Periódicamente, los vendedores remiten información en archivos de texto. Esta
información consiste en el nombre de cada cliente, y la venta correspondiente. Sin
embargo, es común que estos nombres contengan errores ortográficos y de digitación.
Adicionalmente, se tiene una tabla llamada “Clientes”, que contiene la información de los
clientes de la empresa. Este ejercicio consistirá en construir un paquete de Integration

49 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Services que lea la información de un archivo de texto, y efectúe correctamente el mapeo
entre los clientes en este archivo y los clientes en la tabla “Clientes”, basada en la
similitud de sus valores. Por ejemplo, en esta tabla se tienen los siguientes registros:
IdCliente NombreCliente
1 Juan Perez Zevallos
3 Carlos Estrada Vilchez
En el archivo de ventas, la información viene en la siguiente forma:
Cliente, Ventas
Juan Peres Zevallos, 85500
Carlos Estrada Vilches, 122250
Obsérvese que en el archivo de texto, el apellido en la primera fila es “Peres” en lugar de
“Perez”. En la segunda fila, el apellido es “Vilches” en lugar de “Vilchez”. El paquete que
se construirá tendrá la capacidad de determinar el cliente correcto para cada venta en el
archivo de texto, con base en la similitud de su nombre con los registros existentes en la
tabla “Clientes”.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS.
2. Crear un nuevo paquete. Para renombrar el nuevo paquete, haga clic derecho en el
paquete, y luego haga clic en Rename. Renombre el paquete a LimpiezaDatos.
Cuando se le pida, haga clic en Yes para renombrar el objeto paquete.
3. Agregue un New Flat File Connection Manager con las siguientes características:
Propiedad Valor
Name Reporte Sucio Ventas
Archivo Seleccione el archivo “ReporteSucioVentas.txt”
Text Qualifier Ninguno
Column names in the first data row Si
4. En el paquete, cree una tarea de tipo Data Flow Task. Asígnele el nombre Limpiar
Datos de Ventas.
5. Dentro de la tarea “Limpiar Datos de Ventas”, agregue un Flat File Source, con las
siguientes propiedades:
Propiedad Valor
Name Archivo de Ventas
Flat File Connection Manager Seleccione el connection manager “ReporteSucioVentas”
6. Dentro de la tarea “Limpiar Datos de Ventas”, agregue una transformación de tipo
Fuzzy Lookup, y establezca su nombre a “Corregir datos”. Luego, seleccione el origen
“Archivo de Ventas” creado en el paso anterior, y conecte su flecha de salida con la
transformación “Corregir datos”.
7. Haga doble clic sobre la transformación “Corregir datos”. Seleccione la pestaña
Reference Table. En la propiedad OLE DB connection manager, seleccione el
connection manager “LibroSSIS” o dele clic en New y seleccione “LibroSSIS”. En la
propiedad Reference table name, seleccione la tabla “Clientes”. Al finalizar, la pantalla
debe tener la apariencia, de la figura siguiente.
8. Seleccione la pestaña Columns. Observe que se muestran dos tablas: una llamada
“Available Input Columns”, que corresponde con el archivo de texto
“ReporteSucioVentas.txt”; y otra llamada “Available Lookup Columns”, que
corresponde con la tabla “Clientes”. Siga los siguientes pasos:

50 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-57
9. En la pestaña Columns, ligue la columna “Cliente” de “Available Input Columns” con la
columna “NombreCliente” de “Available Lookup Columns”.
10. En “Available Input Columns”, desmarque el check de la columna “Cliente”.
11. En “Available Lookup Columns”, marque el check de las columnas “IdCliente” y
“NombreCliente”.
12. Al finalizar, la ventana debe tener parecerse a la Figura 1-58:

Figura 1-58
13. Pulse el botón OK.
14. A continuación, agregue un OLE DB Destination, y establezca su nombre a “Ventas a
Clientes”. Seleccione la transformación “Corregir datos”, y conecte su flecha de salida
con el destino “Ventas a Clientes”. Al finalizar, la ventana Data Flow debe tener la
apariencia, de la Figura 1-59:

51 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 1-59
15. Configure las propiedades del destino “Ventas a clientes” de la siguiente manera:
Propiedad Valor
OLE DB Connection Manager LibroSSIS
Data Access Mode Table or view – fast load
Name of the table or the view Pulse el botón New, y cree una nueva
tabla con la siguiente definición:
CREATE TABLE [VentasClientes] (
[Ventas] varchar(50),
[IdCliente] integer,
[NombreCliente] varchar(50),
[_Similarity] real,
[_Confidence] real,
[_Similarity_Cliente] real
)
16. En el destino “Ventas a clientes” establezca los siguientes mapeos de columnas;
como en la Figura 1-60:

Figura 1-60
17. Guarde el paquete y ejecútelo. Consulte los registros de la tabla VentasClientes.
Verifique que la limpieza de los datos provenientes del archivo de texto “Ventas-
sucio.txt” se ha efectuado correctamente. Observe los valores de las columnas
“_Similarity”, “_Confidence” y “_Similarity_Cliente”.
Comprobación rápida
1. ¿Cómo se utiliza SSIS para importar un archivo desde un servidor FTP a una tabla
SQL Server?
2. Necesita migrar una base de datos Access creado por el usuario a SQL Server, pero
la Toolbox Data Flow no contiene un adaptador de fuente Access. ¿Cómo podría
importar estos datos a SQL Server?

52 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
3. La transformación Multicast y la transformación Conditional Split ambos pueden tener
múltiples salidas. ¿Qué transformación debería utilizar si necesito enviar filas que
correspondan a cierta condicion a una salida y las filas que correspondan con otra
diferente condicion a otra salida?
4. Describir las transformaciones que puede utilizar para combinar datos de dos
diferentes tablas de base de datos que existen en dos servidores diferentes.
Respuestas de comprobación rápida
1. En primer lugar, debe utilizar una tarea FTP para copiar el archivo a la máquina en la
que SSIS está instalado. A continuación, puede importar el archivo a una tabla SQL
Server, usando una tarea Data Flow, configurado con un adaptador fuente Flat File y
un adaptador destino SQL Server, o un adaptador destino OLE DB.
2. Aunque no figure en el cuadro de herramientas, Access es una de los muchos
orígenes y destinos de base de datos que trabaja con SSIS. Para extraer los datos de
Access, primero necesitas crear una conexión de paquete del proveedor Microsoft Jet
OLE DB. Puedes entonces utilizar el adaptador fuente OLE DB para seleccionar la
tabla o realizar una consulta personalizada.
3. La transformación Conditional Split le permite definir las expresiones contra las
cuales, las filas de la fuente serán evaluadas. Para cada fila, las expresiones son
evaluadas en orden, y una fila es enviada al primer resultado cuando la expresión
relacionada se evalúa como True. Por lo tanto, una fila puede tener una sola salida.
Con una transformación Multicast, por el contrario, todas las filas pueden tener varias
salidas.
4. Para combinar datos de dos tablas de bases de datos diferentes, que existen en dos
servidores diferentes; puede utilizar la transformación Merge Join, que combina los
conjuntos de datos uniendo las filas a través de un conjunto de llaves comunes. Esta
transformación permite un inner join, un left outer join, o un full outer join. También se
puede utilizar una Transformación Lookup para asociar datos de dos origenes. La
Lookup puede mantener en caché una tabla en memoria y, a través de columnas
relacionadas, puede retormar nuevas columnas al flujo de datos.
Escenario Posible: Creación de una solución ETL
El departamento de desarrollo de negocios de Adventure Works, ha pedido que se
implemente un data mart que se pueda usar para analizar las ventas del distribuidor,
contra los destinos de ventas de los vendedores. Su primera tarea es crear una serie de
paquetes SSIS que mueven los datos de la fuente del sistema Enterprise Resource
Planning (ERP) a una base de datos data mart que contiene las tablas de hechos y las
tablas de dimensiones.
1. ¿Cómo trabajar en BIDS para crear estructuras de proyecto SSIS, paquetes, data
source de proyecto, y las package connections?
2. ¿Qué transformaciones se utiliza, y cómo se implementa el data flow que cargan las
tablas de dimensiones?
3. ¿Qué transformaciones se utiliza, y cómo se implementa el data flow que cargan las
tablas de hechos?
Resumen de Capítulo
 La creación de paquetes SSIS implica trabajar con BIDS y la creación de un nuevo
proyecto SSIS.
 El objetivo principal de un proyecto SSIS es un paquete, que contiene la lógica de
negocio para gestionar data flows y los procesos de datos.
 Dentro de un paquete, el Control Flow le permite crear tareas y contenedores, que
proporcionan la capacidad de ejecutar las operaciones orientadas al proceso.

53 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
 La tarea Data Flow es el segundo objeto central (detrás del Control Flow) en un
paquete SSIS, lo que permite operaciones de procesamiento de datos.
 El Data Flow utiliza adaptadores de origen, adaptadores de destino, y
transformaciones.

54 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
CAPITULO 2
Depuración y tratamiento de errores en SSIS
Desarrollar paquetes e implementarlos va más allá de las transformaciones, usadas para
conectar las fuentes a los destinos. También se puede implementar el manejo de errores
y probar y solucionar problemas de sus paquetes, a medida que se presentan. SQL
Server 2008 R2 Integration Services (SSIS) proporciona varias maneras de controlar los
errores, en los diferentes niveles de la arquitectura SSIS. Por ejemplo, en el nivel Control
Flow, se puede añadir una restricción de falla que, si se produce un error, vuelve a dirigir
el flujo de trabajo a una tarea alternativa específica. Asimismo, en el Data Flow, si una fila
produce un error en una transformación, puede enviar la fila de salida a una ruta de error.
SSIS incluye capacidades de gestión de eventos que permite atrapar eventos OnWarning
y eventos OnError, y se puede tener todos estos sucesos registrados en una tabla o un
archivo para revisión y resolución de problemas.
En este capítulo, miraremos las diversas capacidades de SSIS para depurar paquetes,
durante el desarrollo y para hacer frente a los errores, durante la ejecución en
producción, incluyendo el registro de la ejecución. Se empieza por buscar la manera de
configurar las transacciones de paquetes y los puntos de control y luego ver la manera de
identificar el estado del paquete, manejar los errores de tareas y el registro de la
ejecución del paquete. Por último, aprender sobre el manejo de errores de flujo de datos
y la depuración.
Objetivos de examen en este capítulo:
 Implementación del control de flujo.
 Implementación del flujo de datos.
 Implementación de auditoría, registro y control de eventos.
 Instalar y mantener los componentes SSIS.
 Identificar y resolver problemas relacionados con la implementación de soluciones
SSIS.
Antes de empezar
Para completar este capítulo, usted debe tener:
 Conocimiento de las características y componentes SSIS.
 Experiencia de trabajo en proyectos y soluciones de SQL Server Business Intelligence
Development Studio (BIDS).
 Práctica trabajando con el Control Flow y el Data Flow.
 Las bases de datos AdventureWorks2008R2 instaladas.

Lección 1: Configurando Transacciones de Paquetes y


Checkpoints
La mayoría de las bases de datos relacionales, como Microsoft SQL Server realizan
operaciones en unidades atómicas. Esto significa que una sola sentencia o una serie de
sentencias se realizan con éxito y afectan a los datos; o no tiene éxito, y el sistema
retorna los datos al estado en que se encontraba, antes del intento de ejecución de la
sentencia. La unidad de trabajo debe ser completada con éxito a fin de que los datos
afectados sean llamados una transacción.
En SSIS, las transacciones se pueden establecer en los distintos niveles del paquete, y
se pueden coordinar las transacciones a través de caracteristicas de reinicio del paquete.
En otras palabras, se puede configurar un paquete para iniciar desde el punto de fallo o
de un paso atrás, cuando el paquete se vuelva a ejecutar. En SSIS, este proceso de

55 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
configuración se llama adición de checkpoints. Los puntos de control (checkpoints)
trabajan junto con las transacciones para permitir el reinicio del paquete.
Definiendo la Configuración de Transacción de Paquete y de Tarea
Puede configurar las transacciones de paquetes a nivel de paquete completo o a nivel de
contenedor Control Flow o a nivel de tarea. Las transacciones en SSIS utilizan el
Microsoft Distributed Transaction Coordinator (MSDTC), el servicio MSDTC debe iniciarse
en el equipo para que las transacciones trabajen. Cualquier servicio o programa que está
habilitado para trabajar con el MSDTC, puede ser parte de una transacción en SSIS.
Para habilitar una transacción dentro de un paquete, es necesario establecer la propiedad
TransactionOption de la tarea o contenedor a Required. La Figura 2-1, resalta las
propiedades de un paquete, en el nivel de control de flujo, lo que significa que las
propiedades se aplican al paquete en su conjunto. La propiedad TransactionOption es la
misma en cualquier objeto Control flow.
Cuando decida sí, y, cómo implementar una transacción, siga estas pautas:
 Para las transacciones que se habiliten en SSIS, es necesario iniciar el servicio
MSDTC, y las tareas que se desea sean parte de la transacción, deben trabajar con el
servicio MSDTC, de forma nativa.
 Si una serie de tareas debe ser completada en una unidad simple, en la que todas las
tareas son exitosas y comprometidas, o se produce un error y ninguna de las tareas
son comprometidas; coloque las tareas dentro de un contenedor Sequence y
establezca la propiedad TransactionOption del contenedor a Required.
 Una tarea puede heredar la configuración de la transaccion de sus padres, cuando la
propiedad TransactionOption se establece a Supported, que es la configuración por
defecto, cuando se crea una tarea o un contenedor.
 Puede evitar que una tarea participe en una transacción, mediante el establecimiento
de su propiedad TransactionOption a NotSupported.
 Si se establece la propiedad TransactionOption de un contenedor Foreach o un
contenedor For Loop a Required, una nueva transacción se creará para cada bucle
del contenedor.
 Las transacciones trabajan en el nivel Control Flow y no dentro de un Data Flow. Por
lo tanto, puede activar una transacción para una tarea Data Flow, pero no se puede
activar por separado para los componentes seleccionados en el Data Flow, ya sea
que el proceso completo de datos sea exitoso o este sea revertido.
TEMAS CLAVE
A veces, puede que desee habilitar una transacción para un contenedor, pero excluir
algunas de las tareas dentro del contenedor. Por ejemplo, si tiene un par de tareas
Execute SQL en el contenedor, que se usan para propósitos de auditoría, pero la
propiedad TransactionOption del contenedor se configura a Required, si se produce un
error, las tareas de registro también se deshacen. Para evitar que las tareas de auditoría
se deshagan, establezca la propiedad TransactionOption para esas tareas a Not
Supported. Esto permitirá que las otras tareas en el contenedor estén consideradas en la
transacción, pero excluirán a las tareas de auditoría como parte de la transacción.

56 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-1
Implementando checkpoints de reinicio
Algunas veces se desea la capacidad de reiniciar un paquete si este falla y hacer que se
inicie desde el punto de fallo, sobre todo si se trabaja con paquetes complicados o de
larga ejecución. En otras palabras, puede que no desee que tareas completadas con
éxito, corran de nuevo si se reinicia el paquete. Puede lograr esto al activar los
checkpoints de reinicio en el paquete.
Habilitar el reinicio dentro de un paquete requiere en primer lugar que active un paquete,
para usar checkpoints y en segundo lugar, el ajuste de las tareas específicas y
contenedores para escribir checkpoints. Para activar checkpoints dentro de un paquete,
siga estos pasos:
1. Dentro del paquete, abra la ventana Properties, si es necesario, a continuación, haga
clic en la ficha Control Flow del Diseñador SSIS, el cual revelará las propiedades del
paquete.
2. Establezca la propiedad SaveCheckpoints a nivel de paquete a True. Esto permite
que SSIS guarde los checkpoints, durante la ejecución del paquete.
3. Para la propiedad CheckpointFileName, proporcione una ruta válida y el nombre del
archivo checkpoint. Los paquetes utilizan los archivos para mantener su información
de estado, por lo que si un paquete falla y luego se reinicia, el paquete puede leer el
archivo checkpoint para determinar donde se quedó y rastrear la información del
estado de la última tarea exitosa.
4. Establezca la propiedad CheckpointUsage a IfExists, lo que hace que el paquete se
ejecute desde el principio si el archivo checkpoint no está presente o se ejecute desde
el punto identificado si el archivo existe.
TEMAS CLAVE
Si se establece la propiedad CheckpointUsage a Always, el archivo checkpoint debe
estar presente o el paquete no se iniciará. Además, utilizar checkpoints no está
permitido, si se ha configurado la TransactionOption del paquete a Required.
La Figura 2-2 muestra las propiedades del paquete, resaltando las propiedades del
checkpoint establecidos en los pasos 1 al 4.
5. Después de habilitar los checkpoints en un paquete, el paso final es establecer los
checkpoints en las diferentes tareas dentro de su paquete. Para ello, establezca la
propiedad FailPackageOnFailure en cada tarea o contenedor a True.
En el ejercicio anterior, las tareas Truncate Update Table, Data Flow y Batch Updates
tienen la propiedad FailPackageOnFailure establecidas a True.

57 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-2
Después de haber realizado los pasos del 1 al 5 para establecer checkpoints para el
paquete, incluyendo los objetos Control Flow, los paquetes están preparados para
reiniciar en caso de fallo. Esto es lo que sucede cuando se ejecuta un paquete que tiene
activados los checkpoints:
1. El paquete comprueba si existe el archivo checkpoint.
 Si el archivo checkpoint no existe, el paquete se inicia en la primera tarea (o
tareas paralelas) en el Control Flow.
 Si el archivo checkpoint existe, el paquete lee el archivo para saber dónde
empezar (incluyendo la actualización del valor de las variables y conexiones en el
momento del último fallo).
2. En cada checkpoint exitoso en el paquete (cuando la tarea Data Flow tiene
FailPackageOnFailure configurado a True y la tarea tiene éxito), el archivo checkpoint
se actualiza.
3. Si el paquete falla, el archivo checkpoint se mantiene en el sistema de archivos y
mantiene la última actualización desde el último checkpoint exitoso.
4. Si el paquete tiene éxito, el archivo checkpoint se elimina. Por lo tanto, la próxima vez
que se ejecuta el paquete, el archivo checkpoint no existe, y el paquete empezara
desde la primera tarea.
La Figura 2-3 muestra la primera ejecución del paquete. En este punto, no existe ningún
archivo checkpoint, por lo que el paquete se inicia en la tarea Execute SQL.

Figura 2-3
Durante la ejecución del Control Flow que se muestra en la Figura 2-3, la tarea Truncate
Update Table tiene éxito, y SSIS escribe un punto de control al archivo checkpoint. Sin
embargo, la tarea Data Flow falla, por lo que no se actualiza el archivo checkpoint, y el
paquete se detiene.
En este punto, el error es corregido en la tarea Data Flow, y el paquete se vuelve a
ejecutar. La Figura 2-4 muestra el Control Flow del paquete, luego de volverse a
ejecutar. Como puede ver, este paquete falló en el paso 2 de la primera ejecución.
58 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Después de que el problema se ha solucionado, la segunda ejecución del paquete se
inicia en el paso 2 y continúa hasta el final.

Figura 2-4
Después de completar el último paso, denominado Batch Updates en la Figura 2-4, el
archivo checkpoint se ha borrado.
MEJORES PRÁCTICAS MANEJAR MÚLTIPLES TAREAS CON
TRANSACCIONES Y REINICIO
A veces será necesario retroceder una serie de tareas, si una de las tareas falla, pero se
quiere regresar sólo hasta el punto de fallo, no al principio del paquete. Para ello,
necesita habilitar checkpoints en el paquete y luego usar un contenedor Sequence que
contenga todas las tareas asociadas. El contenedor Sequence debe tener las
transacciones activadas por haber configurado TransactionOption a Required en el nivel
de contenedor.
PRACTICA: Implementando Paquetes y Transacciones de Tareas
En esta práctica, se activaran las transacciones en el nivel de contenedor y se observará
los resultados, cuando una tarea falla dentro del contenedor. También se activaran los
checkpoints para un paquete y se observará los resultados.
EJERCICIO 1: Habilitar Transacciones y Observar una Transacción Rollback
En este ejercicio, se activara una transacción para un contenedor Sequence y se
observara los resultados de los datos después de que un error ocurra en otra tarea en el
mismo contenedor.
1. En el Panel de control, seleccione Herramientas administrativas y luego Servicios,
para abrir la consola de Servicios. Si es necesario, inicie el Coordinador de
transacciones distribuidas de Microsoft (MSDTC).
2. Abra el proyecto SSIS llamado PLibroSSIS en SQL Server Business Intelligence
Development Studio (BIDS) que creó en el Capítulo 1, "Desarrollando Paquetes
SSIS", a continuación, abra el paquete llamado MyPackage.dtsx.
3. Elija Properties Window del menú View para abrir la Ventana Propiedades. Haga clic
en el botón Auto Hide, que se asemeja a una tachuela, en la ventana Propiedades
para bloquear la ventana en la posición abierta.
4. En la superficie de diseño Control Flow, seleccione el objeto contenedor Sequence
haciendo clic en él, y note las propiedades del contenedor Sequence listadas en la
ventana Propiedades.
5. Establezca la propiedad TransactionOption a Required utilizando la lista desplegable.
6. Guarde el paquete haciendo clic en el botón Save de la barra de herramientas.
7. A continuación, arrastre una nueva tarea Execute SQL de la caja de herramientas a la
parte inferior en la superficie de trabajo del contenedor Sequence, justo debajo de la
tarea Data Flow.
8. Conecte la tarea Data Flow a la nueva tarea Execute SQL, arrastrando la flecha de
salida que esta debajo de la tarea Data Flow, a la tarea Execute SQL.
9. Editar la tarea Execute SQL, haciendo doble clic en la tarea.

59 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
a. En el cuadro de dialogo Execute SQL Task Editor, cambie la propiedad
Connection a la conexión AdventureWorks2008R2.
b. Modifique la propiedad SQLStatement y escriba la siguiente instrucción:
SELECT CONVERT(int,ProductLine) FROM Sales_Summary
Este código SQL intencionalmente fuerza un error en la tarea Execute SQL,
cuando intenta convertir un valor de texto a un entero. Haga clic en OK para cerrar
el cuadro de dialogo Enter SQL Query.
c. Cambie la propiedad Name en el cuadro de dialogo Execute SQL Task Editor a
Forzar Fallo.
d. Haga clic en OK en el cuadro de dialogo Execute SQL Task Editor para volver a la
superficie de diseño Control Flow. La Figura 2-5, muestra como lucirá el Control
Flow con la nueva tarea Execute SQL.

Figura 2-5
10. Abra SQL Server Management Studio (SSMS) y conéctese al Database Engine. Abra
una nueva consulta de la base de datos AdventureWorks2008R2.
11. Ejecute la siguiente instrucción SQL y, a continuación, observe los resultados:
SELECT COUNT (*) FROM Sales_Summary
12. Volver a la BIDS, a continuación, ejecutar el paquete SSIS que acaba de modificar, el
cual intencionalmente falla en el último paso. Antes de detener el paquete en el modo
Debug, abra la tarea Data Flow y observe que el diseñador SSIS muestra un par de
miles de filas insertadas en la tabla Sales_Summary.
13. Detenga la ejecución del paquete, y vuelva a ejecutar la consulta del paso 11. Se
debería ver el mismo número de filas.
14. Observe que aunque la tarea Data Flow se ha realizado exitosamente, los datos se
deshacen. Esto es porque el contenedor Sequence fue configurado con
TransactionOption a Required y la última tarea en el contenedor Sequence ha fallado;
por lo tanto se deshacen los datos, de la tarea Data Flow.
EJERCICIO 2 Establecer y observar los Checkpoints en un paquete
En este ejercicio, se activaran los checkpoints en el paquete DimCustomer.dtsx y se
observará cómo trabajan los checkpoints cuando se produce un error.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el PLibroSSIS, y luego edite el paquete DimCustomer.dtsx dándole doble clic en
el Explorador de soluciones.
2. Abra la ventana Propiedades de la ficha Control Flow y, a continuación, cambie las
siguientes propiedades a nivel de paquete:
a. Establecer CheckpointFileName a
C:\SSIS\LibroSSIS\DimCustomer_Checkpoint.xml
b. Establecer CheckpointUsage a IfExists
c. Establecer SaveCheckpoints a True
3. Seleccione las tres tareas en el Control Flow (mantenga presionada la tecla Ctrl y
haga clic en cada uno de los tareas). De esta manera, puede cambiar la propiedad
FailPackageOnFailure para todas las tareas al mismo tiempo.

60 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
4. En la ventana Propiedades, mientras que las tareas están seleccionadas, cambie la
propiedad FailPackageOnFailure a True.
5. Ahora, seleccione sólo el objeto tarea Data Flow y, a continuación, cambie la
propiedad ForceExecutionResult a Failure. La propiedad ForceExecutionResult se
encuentra en las propiedades de grupo Misc (Varios) y se utiliza para las pruebas,
cuando se desea simular una falla para comprobar errores de manipulación o de la
lógica del checkpoint.
6. Ejecute el paquete DimCustomer.dtsx en BIDS, y observe que el paquete de forma
intencionada falla en la tarea Data Flow.
7. Detener el paquete en el depurador, y luego comprobar la ruta C:\SSIS\LibroSSIS en
el Explorador de Windows, la existencia del archivo DimCustomer_Checkpoint.xml.
Este archivo contiene la información de estado cuando el paquete falló.
8. Antes de reiniciar el paquete, seleccione el objeto de tarea Data Flow, a continuación,
cambie la propiedad ForceExecutionResult a None, la que permitirá a la tarea Data
Flow ejecutarse correctamente.
9. Reinicie el paquete DimCustomer.dtsx en la superficie de diseño Control Flow, y note
que el paquete se inicia en la tarea Data Flow y luego se completa con el final de la
tarea Execute SQL.
10. Por último, retornar a la unidad C en el Explorador de Windows, y confirmar que el
archivo DimCustomer_Checkpoint.xml ya no existe, ya que se eliminó
automáticamente después que el paquete se ejecutó con éxito.
11. Retorne al BIDS y haga clic en el botón Stop en la barra de herramientas para volver
al Diseñador SSIS.
Comprobación rápida
1. Se agrega un contenedor Sequence a un paquete que contiene varias tareas, una de
las cuales llama a un comando, en un sistema heredado y otra tarea Data Flow,
importa datos a SQL Server. Ambas tareas tienen la propiedad TransactionOption
establecida a Required. Incluso con el servicio MSDTC iniciado y las transacciones
activadas, el contenedor Sequence falla antes de que tareas se ejecuten. ¿Cuál es el
problema?
2. ¿Qué debe configurar para utilizar las propiedades checkpoint a nivel de paquetes
después que se han activado las propiedades checkpoint?
Respuestas de comprobación rápida
1. Las transacciones que se configuran en SSIS utilizan el servicio MSDTC. Sin
embargo, no todos los sistemas soportan MSDTC, y una transacción no puede ser
forzada en un sistema incompatible, por lo que el contenedor fallará. Se debería
eliminar la tarea heredada del contenedor Sequence que tiene la transacción o
establecer la propiedad TransactionOption a Not Supported.
2. Es necesario establecer la propiedad FailPackageOnFailure a True para tareas que
escriben al archivo checkpoint. Sin embargo, si desea volver a ejecutar tareas
exitosas, que ocurrieron antes de que la tarea haya fallado, es necesario utilizar un
contenedor Sequence para todo el grupo de tareas relacionadas que requieran las
transacciones.

Lección 2: Identificando el Estado del Paquete, la Activación de


Registro y el Manejo de Errores de Tarea
Un paquete que se ejecuta en BIDS en el Diseñador SSIS, muestra el progreso de la
ejecución, incluido el estado de las tareas y contenedores. En el Data Flow, cuando un
paquete se está ejecutando en el entorno de depuración BIDS, se puede supervisar el
progreso del paquete a través del número de filas, de los flujos de datos a través de los

61 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
componentes del Data Flow, y se puede ver los cambios de color que indican el estado.
En general, esta funcionalidad de avance permite fácilmente probar los paquetes e
identificar errores a medida que se están desarrollando.
Además, el Control Flow permite a las restricciones de precedencia que controlen las
etapas del flujo de trabajo en un paquete, especificando las tareas que se deben ejecutar
basados en un estado de terminación simple (éxito, fracaso o completado) y los que
deben utilizar criterios avanzados de evaluación. Esta lección, busca formas de controlar
el estado de ejecución del paquete, durante el desarrollo y la forma de configurar las
restricciones Control Flow, para manejar los errores y permitir el manejo avanzado de
precedencias.
Ver el Estado del Paquete
Mientras un paquete se está ejecutando, en el entorno de depuración (es decir, cuando
se ejecuta un paquete en BIDS), puede ver el estado de Control Flow y los componentes
del Data Flow. BIDS destaca tareas en diferentes colores, de la siguiente manera, para
ayudarle a ver lo que está sucediendo en el paquete:
 Los objetos que no se resaltan cuando un paquete se esta ejecutando, es que
todavía no han iniciado.
 Los objetos resaltados en amarillo están en curso. En el Data Flow, también verá el
número de filas que han pasado por los componentes de origen, transformación, y de
destino.
 Una tarea o componente de Data Flow resaltado en rojo ha fallado. Incluso después
de que ha ocurrido un error, otros componentes en el paquete podrían aún seguir
ejecutándose.
IMPORTANTE: PERMITIR MÚLTIPLES ERRORES EN UN PAQUETE DURANTE LA
EJECUCIÓN
La propiedad Control Flow MaximumErrorCount permite que un paquete continúe
ejecutándose hasta que termine, incluso después de que se han producido errores. El
número máximo especifica el número de errores que pueden ocurrir, antes de que el
paquete detenga la ejecución y reporte la falla.
 Cuando los componentes son resaltados en verde, ya sea que la tarea Control Flow o
el contenedor este completa o que todas las filas disponibles han ido a través de los
componentes exitosamente.
Si está usando un contenedor For Loop o un contenedor Foreach Loop, las tareas
incrustadas pueden cambiar a los multiples colores de estado, en diferentes momentos,
como los lazos sean realizados. Incluso cuando todas las tareas de un paquete se han
completado, el paquete permanecerá en el estado de depuración/ejecución hasta que el
paquete sea detenido. Este comportamiento le permite ver fácilmente el estado final de
las tareas y el número de filas en el Data Flow.
Además del apoyo visual que le ayuda a ver lo que un paquete está haciendo, mientras
es ejecutado en el entorno de depuración, también se pueden leer los detalles de su
ejecución, en una nueva pestaña en el Diseñador SSIS, llamado Progress. La Figura 2-6,
muestra los resultados de la ficha Progress de un paquete durante la ejecución.

62 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-6
Cuando un paquete se ejecuta fuera del entorno de depuración, el nombre de ficha
cambia a Execution Results. Los resultados listados incluyen descripciones de error y de
advertencia, tiempos de ejecución, número de filas de destino final, y otras informaciones
de ejecución (tales como los pasos de validación y la configuración de uso).
Configuración del Registro de Ejecución
La misma información capturada en la ficha Progress cuando un paquete se ejecuta en
BIDS, puede también ser capturada en una tabla de registro o un archivo de registro,
usando caracteristicas de registro incorporadas en SSIS.
Puede habilitar el registro, en un basico paquete por paquete, y activar el registro para un
paquete; abriendo en primer lugar, un paquete en BIDS y luego seleccionando Logging
del menú SSIS. También puede abrir el cuadro de dialogo Configure SSIS Logs haciendo
clic derecho en la ficha Control Flow y luego clic en Logging. La Figura 2-7, muestra el
cuadro de dialogo Configure SSIS Logs.

Figura 2-7
Habilitar el registro en un paquete involucra los siguientes tres pasos:
 Escoger el contenedor a registrar. La sección de navegación izquierda del cuadro
de dialogo Configure SSIS Logs, le permite definir para que parte del paquete desea
habilitar los registros. Por lo general, se quiere registrar un paquete completo, en cuyo
caso, deberá seleccionar la casilla de verificación para todo el paquete en la parte

63 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
superior izquierda del árbol de navegación. Pero también se puede registrar parte de
un paquete seleccionando la casilla de verificación para el contenedor adecuado o
tarea.
 Configurar el tipo de proveedor de registro. El proveedor de registro, es la
ubicación del destino de evento de registro, tales como una tabla o un archivo.
Seleccionar el proveedor de la lista desplegable, Provider Type en la ficha Providers
and Logs del cuadro de dialogo y hacer clic en Add. Los tipos de registro más
comunes son Text Files o SQL Server, pero también se puede registrar en el
Windows Event Log, SQL Server Profiler, o un archivo XML. Si es requerido por el
tipo de proveedor seleccionado, especifique una conexión en la lista desplegable
Configuration y luego seleccione la casilla de verificación para habilitar el registro en
este proveedor. Los ejercicios de práctica al final de la lección se centran en el
proceso de configuración de registro.
 Seleccionar los eventos de registro. Los eventos de registro son los detalles que
captura SSIS en el proveedor, cuando un paquete se ejecuta. Estos eventos se
encuentran en la pestaña Details en el cuadro de dialogo Configure SSIS Logs. La
Figura 2-8, muestra varios eventos seleccionados en la pestaña Details.

Figura 2-8
Los eventos de registros más comunes seleccionados son OnError, OnPostExecute,
OnPreExecute, OnProgress y OnTaskFailed. Los eventos OnPreExecute y
OnPostExecute son capturados al inicio y al final de cada contenedor y tarea, cuando se
ejecuta el paquete y permite un método para determinar los tiempos de ejecución de
cada tarea.
Si selecciona SQL Server como proveedor de registro, los detalles de registro se
almacenan en una tabla del sistema denominada dbo.sysssislog. La Figura 2-9, muestra
el contenido de la tabla después de que un paquete es ejecutado.

64 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-9
Conectando objetos Control Flow con precedencia
Las restricciones de precedencia son los conectores Control Flow entre las tareas y
contenedores. De hecho, en las prácticas que completó en el Capítulo 1 y en la Lección
1, de este capítulo, ha creado simples restricciones de precedencia arrastrando las
flechas de salida de una tarea a otra. Por lo general, estos conectores son verdes, rojos o
azules, indicando el éxito, el fracaso, o la terminación de la ejecución, respectivamente.
Por ejemplo, si una tarea falla, las restricciones que son azules o rojas se evalúa como
True. A pesar de que una tarea falla, se considera completa; y por lo tanto, las
restricciones azules (finalización) continúan a la siguiente tarea o contenedor.
IMPORTANTE: COMPARANDO RESTRICCIONES DE PRECEDENCIA CONTROL
FLOW Y RUTAS DATA FLOW
Las restricciones de precedencia se utilizan sólo en el Control Flow de un paquete y no
en el Data Flow. Al mirar los objetos configurados en el Control Flow y al comparar estos
dos componentes configurados en el Data Flow, los objetos lucen similares, pero son
muy diferentes. Los conectores entre los objetos en el Control Flow son las restricciones
de precedencia (Precedence Constraints), mientras que los conectores en el Data Flow
son las rutas de datos (Data Paths). Se verán rutas en la lección 3, "Manejo de Errores
Data Flow y Depuración".
SSIS también proporciona capacidades avanzadas de restricciones, que permiten
criterios de evaluación condicional y/o de expresiones. La Figura 2-10, muestra un
Control Flow complejo que se ha configurado con varias restricciones de precedencia.

Figura 2-10
Tenga en cuenta que algunas líneas de restricción son solidas, algunas son discontinuas,
y algunas tienen símbolos de función (Fx) asociados a ella. Cada uno de ellas, indica la

65 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
implementación de una función de restricción de precedencia diferente, de la siguiente
manera:
 Las líneas continuas representan precedencia lógica AND, lo que significa que una
tarea se ejecutará sólo cuando todas las condiciones de restricción se cumplan.
 Las líneas discontinuas son sentencias lógicas OR entre las tareas. Por ejemplo, si
una tarea tiene una precedencia discontinua enlazada con él, la tarea se ejecutará
cuando cualquiera de las condiciones de precedencia se cumpla.
 Símbolos de función muestran que una expresión SSIS se ha incrustado en la
restricción para su evaluación. Cuando se utilizan expresiones incrustadas, las
restricciones pueden determinar la ejecución de tareas, no relacionadas a resultados
de tareas anteriores.
En el Control Flow, se puede editar una restricción de precedencia haciendo doble clic en
la restricción o haciendo clic derecho en la restricción y luego clic en Edit. La Figura 2-11
muestra el Precedence Constraint Editor.
Como se ve en el cuadro de diálogo Precedence Constraint Editor en la Figura 2-11,
observe los dos grupos generales de propiedades: las propiedades Evaluation Operation
y las propiedades Multiple Constraints.

Figura 2-11
Propiedades Evaluation Operation
Las propiedades Evaluation operation, le permiten definir las condiciones que determinan
el éxito de la evaluación de la restricción. Hay dos indicadores primarios de evaluación:
 Las Restricciones son simplemente el estado de ejecución de la tarea (finalización,
fracaso o éxito) upstream (flujo hacia arriba), que puede elegir de la lista desplegable
Value. Por ejemplo, si una tarea upstream falla y la restricción se establece a Failure,
el requisito de restricción se cumple.
 Las Expresiones de las restricciones de precedencia son evaluadores avanzados
booleanos (lo que significa que se debe evaluar como True o False) que se puede
escribir en el lenguaje SSIS Expression. Las expresiones pueden incluir funciones
matemáticas y de cadena y pueden hacer referencia a variables del paquete. Cuando
la operación de evaluación permite una expresión, puede escribirla en el cuadro
Expression.
Puede especificar diferentes combinaciones de estos dos indicadores de evaluación que
trabajan juntos para determinar si la restricción de precedencia permite que una tarea
downstream (flujo hacia abajo) se ejecute. La lista desplegable Evaluation Operation
incluye cuatro opciones:

66 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
 Constraint. Seleccionando Constraint, se especifica que sólo el estado de
finalización de ejecución será usado, para evaluar la restricción de precedencia.
 Expression. Seleccionando Expression, se especifica que sólo una expresión será
usada, para evaluar la restricción de precedencia.
 Expression and Constraint. Si selecciona Expression and Constraint, la restricción
de precedencia evaluara como True sólo si ambas expresiones se evalúan como True
y el estado de ejecución coincide con la configuración de la restricción.
 Expression or Constraint. Si selecciona Expression or Constraint, la restricción de
precedencia será evaluada como True, si cualquiera de las expresiones se evalúa
como True o si el estado de ejecución coincide con la configuración de la restricción.
Todas las propiedades mencionadas aquí, se refieren directamente a la restricción de
precedencia específica, que se está editando. Estas opciones, le proporcionan un control
granular sobre cómo SSIS debe evaluar una restricción de precedencia. Siempre que
utilice una expresión, como la operación de evaluación o como parte de una operación de
evaluación, SSIS mostrará un símbolo de función pequeño al lado de la línea de
restricción de precedencia.
Propiedades de Restricciones Múltiples
Cuando se tiene varias restricciones de precedencia conectados a la misma tarea o
contenedor, también tiene la opción de aplicar comparaciones entre las restricciones. Las
dos opciones de restricciones múltiples son las siguientes:
 Logical AND. Es el valor por defecto y significa que todas las restricciones de
precedencia conectadas a la tarea o contenedor necesitan cumplir sus condiciones,
para que la tarea downstream o contenedor se ejecute.
 Logical OR Permite especificar que sólo una de las restricciones de precedencia
necesita cumplir sus requerimientos, para que la tarea o contenedor se ejecute.
Cuando se cambia la condición lógica para Logical AND o Logical OR, el cambio se
transmite a todas las restricciones de precedencia conectadas a la misma tarea
downstream o contenedor. Cuando se establece la condición a Logical OR, las líneas de
restricción de precedencia se convierten a discontinuas para todas las restricciones de
precedencia relacionadas.
Volviendo al ejemplo de la Figura 2-10, las restricciones mostradas controlan el flujo de
trabajo del Control Flow de la siguiente manera:
1. Cada bucle en el contenedor Foreach Loop verificará los archivos y primero realizará
una tarea Script y una tarea Execute SQL. Las restricciones de precedencia después
de cada una de estas tareas son marcadas como Success, por lo que ambas tareas
deben completarse con éxito para que la tarea Data Flow se ejecute.
2. La tarea Data Flow tiene dos restricciones de precedencia, una Success y una
Failure. Si la tarea Data Flow se realiza correctamente, una tarea File System se
ejecuta y mueve el archivo procesado con éxito a una carpeta llamada Archive. Si la
tarea Data Flow falla, una diferente tarea File System mueve el archivo a una carpeta
llamada Error_Files.
3. La última tarea en el contenedor Foreach Loop es una tarea Execute SQL que verifica
el procesamiento del archivo. Si tiene dos restricciones de precedencia conectados a
él, y se marcan como Logic OR con una restricción Completion. Esto significa que
cuando suceda que la tarea File System mueva el archivo que se ha completado
correctamente o bien la tarea File System mueva el archivo de error completo, esta
tarea Execute SQL se ejecuta.
4. Cuando el contenedor Foreach Loop se completa, tiene una restricción de
precedencia ligada a otra tarea Execute SQL. La Figura 2-11 muestra el editor de esta
restricción, que requiere que el contenedor Foreach Loop tenga éxito y que la variable
FileCount tenga un valor mayor que 0. Esta variable se actualiza en la tarea Script en

67 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
el contenedor Foreach Loop. Si no hay archivos a procesar, el valor FileCount es 0, y
la última tarea Execute SQL en el Control Flow no se ejecuta.
PRACTICA: Creación y configuración restricciones de precedencia
En los siguientes ejercicios, creará restricciones de precedencia para especificar cuando
las tareas Control Flow deben ejecutarse; a continuación, podrá observar las
consecuencias de la definición de las restricciones de precedencia, durante la ejecución.
También se activará el registro de paquetes, para el paquete DimCustomer.dtsx.
EJERCICIO 1: Establecer restricciones
En este ejercicio, se configura una restricción de precedencia para manejar errores y
también crear una tarea Script, que muestre un cuadro de mensaje, demostrando que la
tarea se ejecutó.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el PLibroSSIS y, a continuación, abra el paquete MyPackage.dtsx.
2. Arrastre una tarea Script a la superficie de diseño del Control Flow, pero no dentro del
contenedor Sequence.
3. Arrastre la flecha de salida del contenedor Sequence hasta la tarea Script.
4. Haga clic derecho en la restricción de precedencia que acaba de crear, y a
continuación, haga clic en Edit en la lista desplegable.
5. En el cuadro de diálogo Precedence Constraint Editor, cambie la lista desplegable
Value a Success, y a continuación, haga clic en OK para guardar los cambios.
6. Editar la tarea Script dándole doble clic.
7. Haga clic en Edit Script, que abre el editor de código de Microsoft Visual Studio.
8. Busque el comentario en el editor: ´Add your code here, el cual está en la sección de
código Public Sub Main() y agregue el siguiente código:
MessageBox.Show ("Script Task ran!")
Asegúrese de eliminar toda la línea: ´Add your code here.
9. En el menú File, elija Exit y, a continuación, haga clic en OK en el cuadro de diálogo
Script Task Editor.
10. Ejecutar el paquete MyPackage.dtsx que acaba de modificar en BIDS.
11. Luego detenga el paquete. No se ejecuta la tarea Script.
12. Eliminar la tarea Execute SQL, Forzar Fallo incrustado en el contenedor Sequence,
dandole clic derecho en la tarea Execute SQL, Forzar Fallo y luego clic en Delete.
13. Vuelva a ejecutar el paquete en BIDS, vemos que la tarea Script se ejecuta porque el
contenedor Sequence se ha realizado correctamente.
14. Para permitir que la tarea Script se ejecute independientemente de si el contenedor
Sequence sea exitoso o fallido, haga clic derecho en la restricción de precedencia que
conecta el contenedor Sequence y la tarea Script y haga clic en Completion.
15. Vuelva a ejecutar el paquete, cuando el cuadro de mensajes de la tarea Script
aparezca, haga clic en OK. Vea que la tarea Script se ejecutó porque se ha
configurado la restricción de precedencia para ejecutarse si el contenedor Sequence
es correcto o fallido.
16. Detenga el paquete, y luego ciérrelo.
EJERCICIO 2: Activar el Registro SSIS para el paquete DimCustomer.dtsx
En este ejercicio, se habilita el registro en un paquete, para capturar los detalles de la
ejecución del paquete, en una tabla SQL. A continuación, se ejecutará el paquete y se
consultará la tabla después de que el paquete se ha completado.

68 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el PLibroSSIS y, a continuación, abra el paquete DimCustomer.dtsx que ha
modificado en el Ejercicio 1, haciendo doble clic en el Solution Explorer.
2. Elija Logging del menú SSIS, el cual abre la caja de dialogo Configure SSIS Logs.
a. Para habilitar el registro de todo el paquete, seleccione la casilla de verificación
próxima a la carpeta DimCustomer de nivel superior, en el árbol de navegación
izquierda.
b. En la lista desplegable Provider Type, seleccione SSIS log provider for SQL
Server, y haga clic en Add. Esto agrega una entrada a la lista para la
configuración de un registro.
c. En la nueva entrada de registro agregada a la lista, seleccione la casilla de
verificación para activarla.
d. En la misma línea de entrada de registro, haga clic en la columna Configuration
para mostrar una lista desplegable de las conexiones de paquetes. Seleccione
AdventureWorksDW2008R2 de la lista.
e. Haga clic en la pestaña Details y, en la lista Events, seleccione la casilla de
verificación al lado de los siguientes eventos: OnError, OnPostExecute,
OnPreExecute y OnTaskFailed.
f. Haga clic en OK para guardar los cambios en la configuración de registro.
3. Para generar entradas de registro, ejecute el paquete DimCustomer.dtsx en BIDS.
4. Después que el paquete se completa, cambiar a SSMS, abrir una nueva consulta y, a
continuación, ejecutar la siguiente sentencia SQL para ver las nuevas entradas, en la
tabla de registro:
SELECT * FROM dbo.sysssislog
EJERCICIO 3: Uso de Expresiones, con Restricciones de Precedencia
En el siguiente ejercicio, simularemos el lanzamiento de una moneda, para obtener más
información sobre el uso de expresiones, con las restricciones de precedencia. En primer
lugar, crearemos una nueva tabla para almacenar los resultados. Nos conectaremos a la
base de datos LibroSSIS en SSMS y ejecutaremos el siguiente script:
CREATE TABLE LanzaMoneda (
Cara INT NULL,
Escudo INT NULL)
GO
INSERT INTO LanzaMoneda SELECT 0,0
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto PLibroSSIS y, a continuación, abra el Solution Explorer. Crear un
paquete nuevo, clic derecho en SSIS Packages, renombre Package1 como
ControlEventos.dtsx.
2. Crear un Connection Manager a la base de datos LibroSSIS, donde se encuentra la
tabla LanzaMoneda.
3. Agregar una tarea Execute SQL al área de diseño Control Flow.
4. Cambie el nombre de la tarea a Borrar Resultado.
5. Doble clic en la tarea Borrar Resultado para abrir el Execute SQL Task Editor.
6. Establezca la propiedad Connection, para que señale al Connection Manager que
acaba de crear y luego escriba el siguiente código en el campo SQLStatement:
UPDATE LanzaMoneda
SET Escudo = 0, Cara = 0
7. Haga clic en OK para aceptar la configuración y cerrar el cuadro de diálogo.
8. Clic derecho en el área de diseño Control Flow y, seleccione Variables del menú
emergente para abrir la Ventana Variables.
9. Crear una nueva variable a nivel de paquete, llamada Resultado. Establecer el tipo
de datos a Int32.

69 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
10. Añadir un contenedor For Loop, al área de diseño. Utilizará el contenedor, para
simular el lanzamiento de una moneda, un número determinado de veces; nómbrelo
como Simulador Lanzar Monedas.
11. Arrastre la restricción de precedencia de la tarea Borrar Resultado hacia el
contenedor Simulador Lanzar Moneda.
12. Seleccione el contenedor Simulador Lanzar Moneda y abra la ventana Variables.
13. Agregar una variable llamada Contador, con un Tipo de datos de Int32. En este caso,
la variable sólo será utilizado por el For Loop y su alcance será de Simulador Lanzar
Moneda.
14. Doble clic en el contenedor Simulador Lanzar Moneda Contenedor para abrir el For
Loop Editor.
15. Establezca las propiedades como en el siguiente cuadro y haga clic en OK.
Propiedad Valor
InitExpression @Contador = 0
EvalExpression @Contador < 100
AssignExpression @Contador = @Contador + 1
Esto debería parecerlo familiar, si ha programado en cualquier otro lenguaje: El For
Loop, se ejecutará 100 veces.
16. Arrastre una tarea Script, dentro del Simulador Lanzar Moneda. Debido a que el
Simulador Lanzar Moneda es un contenedor, puede arrastrar otras tareas dentro del
mismo. Nombrar la tarea Script como Lanzar Moneda.
17. Doble clic en Lanzar, para abrir el Script Task Editor. En el panel Script, sección
ReadWriteVariables, seleccione User::Resultado. El Script tendrá acceso sólo a las
variables establecidas, en esta forma.
18. Haga clic en Edit Script, para abrir el entorno de diseño de Visual Studio. Cada vez
que este script se ejecuta, fijará al azar la variable Resultado, igual a uno o dos.
Reemplace Sub Main, con este código:
Public Sub Main()
Randomize()
Dts.Variables(“User::Resultado”).Value = CInt(Int((2 * Rnd()) + 1))
Dts.TaskResult = ScriptResults.Success
End Sub
19. Cierre el área de diseño del Script y haga clic en OK para aceptar los cambios.
20. Arrastre dos tareas Execute SQL en el contenedor Simulador Lanzar Moneda.
Nombre uno como Cara y el otro como Escudo.
21. Conecte la tarea Script Lanzar Moneda a cada una de las tareas Execute SQL.
22. Doble clic en la restricción de precedencia, que apunta a la tarea Cara, para que
aparezca la ventana Precedence Constraint Editor.
23. Cambie la Evaluation Operation de Constraint a Expression. El cuadro de texto
Expression, estará ahora disponible. Escriba lo siguiente en la propiedad Expression:
@Resultado == 1
24. Haga clic en OK. La restricción de precedencia cambiará de verde a azul, lo que
significa completion, y tendrá un símbolo fx, junto a él, que significa que la
precedencia usa una expresión. La Figura 2-12, muestra la ventana Precedence
Constraint Editor, configurada con Expression.

70 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-12
Al evaluar dos valores en una expresión Booleana SSIS, tendrá que utilizar dos
signos igual (==). Esto indica que la expresión devolverá TRUE o FALSE,
dependiendo de si los valores son iguales o no. Los valores NULL no se evalúan, así
que asegúrese de comprobar, de que ambos lados del ==, sean valores no nulos. La
única vez que va a utilizar un signo igual individual, es cuando esté utilizando una
expresión SSIS, para establecer el valor de una variable; como cuando se utiliza un
contenedor For Loop.
25. Para continuar con el ejercicio, lo siguiente es abrir las propiedades de la restricción
de precedencia, que está conectado a la tarea Escudo. Cambie la Evaluation
Operation de Constraint a Expression. Escriba lo siguiente en la propiedad
Expression:
@Resultado == 2
26. Haga clic en OK para aceptar las propiedades. En este punto, el paquete debe ser
similar a la Figura 2-13.

Figura 2-13
27. Doble clic en la tarea Cara para abrir el Execute SQL Task Editor. En la propiedad
Connection, ajuste el valor al Connection Manager, de la base de datos LibroSSIS.
Escriba lo siguiente en la propiedad SQLStatement para incrementar el contador en la
tabla LanzaMoneda:

71 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
UPDATE LanzaMoneda SET Cara = Cara + 1
28. Haga clic en OK para aceptar los cambios. Abra el Execute SQL Task Editor, para el
objeto Escudo. Establezca la propiedad Connection, al Connection Manager, de la
base de datos LibroSSIS. Escriba este código en la Propiedad SQLStatement:
UPDATE LanzaMoneda SET Escudo = Escudo + 1
29. Haga clic en OK para aceptar la configuración y ejecute el paquete.
Cuando se ejecuta el paquete, se puede ver que a veces se ejecuta Cara, y a veces se
ejecuta Escudo. Una vez que la ejecución del paquete se completa, volver a SQL Server
Management Studio, para ver los resultados, ejecutando esta consulta:
SELECT * FROM LanzaMoneda
De los 100 lanzamientos de la moneda, la Cara debería haber salido aproximadamente
unas 50 veces.
Comprobación rápida
1. ¿Cuando un paquete falla mientras se está desarrollando, donde debería buscar, para
identificar que sucedió?
2. Se tiene un paquete que incluye un paso, que ocasionalmente falla debido a
problemas de conectividad de redes. Cuando un error de conectividad de la red
ocurre, se necesita realizar un paso alternativo para ejecutar la misma operación en
una manera más lenta, pero más segura. A la finalización del paso alternativo, le
gustaría ejecutar el siguiente paso, en el flujo de trabajo original. ¿Cómo se puede
lograr esto?
Respuestas de comprobación rápida
1. La pestaña Progress o Execution Results en el Diseñador SSIS muestra detalles de la
ejecución del paquete, incluyendo las advertencias que se muestran o errores que se
producen durante la ejecución. A menudo, necesitará desplazarse por los resultados y
buscar los errores y sus descripciones. Un simple error puede producir múltiples
mensajes de error.
2. De la primera tarea, crear una restricción de precedencia de fallo roja hacia la tarea
alternativa. Es necesario crear restricciones Success de la tarea alternativa y la tarea
original a la tercera tarea. Es necesario establecer las restricciones Success a Logical
OR para que cuando la primera tarea o la segunda tarea sea exitosa, la última tarea
se ejecutará.

Lección 3: Manejo de Errores Data Flow y Depuración


En el mundo real, ninguna fuente de datos es perfecta. Por lo tanto, tendrá que manejar
las anomalías y los malos datos, así como su proceso de datos en su Data Flow SSIS.
Por defecto, cuando se produce un error en una fila de flujo de datos, la tarea Data Flow
falla. Sin embargo, SSIS incluye la capacidad para dirigir las filas erróneas, lejos del flujo
de datos y manejar el problema de datos sin afectar a las filas correctas. Además, en el
Data Flow, puede pausar la ejecución y observar los datos actuales, que fluyen a través
del motor SSIS.
En esta lección, nos centraremos en el uso de rutas de error para dirigir filas fallidas, a un
subconjunto diferente de componentes; y revisar como usar visores de datos, para
depurar los flujos de datos. Por último, exploraremos el uso de controladores de eventos,
para cuidarnos de los errores del paquete y la forma de utilizar breakpoints para depurar
el control de flujo.
Utilizar Rutas de Error para Manejar Errores Data Flow
Las rutas en el Data Flow son similares a las restricciones de precedencia en el Control
Flow, excepto que las rutas Data Flow manejan las filas de datos, en lugar del estado de
ejecución de las tareas. Hay dos rutas primarias en el Data Flow:

72 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
 Rutas de Datos. Los conectores verdes van desde un componente a otro. Para
estas rutas, las filas que son exitosas van a través de un componente a la salida, al
igual que las filas de errores, cuando la salida de error se establece a Ignore Failure.
 Rutas de Error. Los conectores rojos entre los componentes Data Flow. Ellos
contienen filas de datos que fallan en un componente, cuando las filas de error se
establecen a Redirect Row.
No todos los componentes usan rutas de error Data Flow. Por ejemplo, el componente
Multicast sólo copia datos, no realiza ninguna operación en los datos, no es posible
apuntar una falla, y no tiene una ruta de error. Entre los componentes que utilizan rutas
de error, se incluyen todos los adaptadores de origen, los adaptadores de destino, las
transformaciones Lookup, las transformaciones Conditional Split, las transformaciones
Derived Column, y así sucesivamente.
La Figura 2-14, muestra un flujo de datos completo, que contiene una transformación
Data Conversion con dos salidas. La ruta de error, que se muestra en rojo en el
Diseñador SSIS (y es etiquetada de rojo en la figura), se ocupa de las filas que fallan en
la operación de transformación Data Conversion.
En este ejemplo, la salida de filas de error se pasa a una transformación Derived Column
denominada Fix Age, y esta transformación Derived Column es enviada a una
transformación Union All, que retorna los datos de error de salida de fila junto con los
datos convertidos con éxito de la transformación Data Conversion.

Figura 2-14
Para utilizar rutas de error, tendrá que configurar la salida de error. Tiene tres opciones
para el manejo de errores, en los componentes de flujo de datos:
 Configurando la salida de error a Fail Component, hace que el flujo de datos falle si se
detecta un error.
 Usando la opción Ignore Failure le permitirá a la fila continuar la ruta normal de datos
verde, pero el valor resultante en el error se cambia a NULL en la salida.
 Configurando la salida de error a Redirect Row envía la fila de error fuera de la ruta
de error roja, esta es la única forma de manejar errores, con componentes separados.
Estas opciones de manejo de errores se encuentran disponibles para filas completas, así
como para la operación de cada columna en la fila. Esto no significa que a una sola
columna se le redirecciona, sino que algunas columnas se pueden configurar, para
ignorar los fallos; mientras que los errores en otras columnas, causan redirecciones. La
Figura 2-15 muestra el cuadro de dialogo Configure Error Output, que se utiliza para
establecer estas propiedades. Para desplazarse a este cuadro de diálogo, puede hacer
doble clic para editar el componente y seleccionar Configure Error Output, o puedes
simplemente arrastrar la flecha de salida de la ruta de error roja al siguiente componente,
que abre el mismo cuadro de diálogo.

73 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-15
En el ejemplo mostrado anteriormente en la Figura 2-14, la transformación Data
Conversion convierte una columna llamada Age de un tipo de datos DT_WSTR (cadena
Unicode) a un tipo de datos DT_NUMERIC (cadena numérica). Sin embargo, algunos de
los valores que provienen de la columna Age son 43, 31, None, 26, y NA. Como puede
ver, SSIS no puede convertir exitosamente los valores de texto a un tipo numérico, y la
transformación Data Conversion falla si las filas de error no se redirigen.
En cambio, las filas de error están configuradas para ser redirigidas, como muestra la
Figura 2-15, y la salida de error roja se envía a una transformación Derived Column.
Toda esta transformación crea una nueva columna que tiene 0 como la edad porque la
edad es indeterminada. La transformación Union All trae la columna Age convertida junto
con el valor 0 de la transformación Derived Column, y las filas pueden ahora ser pasadas
eventualmente, al destino sin error.
Los usos más comunes de la ruta de salida de error; cuando el archivo de texto de origen
de datos no coincide, con el tipo de datos especificado en el flujo de datos o cuando una
transformación Lookup no encuentra una coincidencia. A veces un destino encuentra una
fila de error, si una restricción es violada cuando inserciones se realizan. Además, las
filas de error pueden ser manejadas de manera diferente, dependiendo de si es necesario
enviarlos a una tabla temporal para revisión o si se necesita limpiar los datos y traer las
filas de nuevo al flujo de datos a través de Union All.
Usando Data Viewers para identificar problemas Data Flow
La solución de problemas puede ser frustrante, especialmente cuando no son capaces de
identificar fácilmente la fila problema o el problema. Por lo tanto, SSIS también incluye la
capacidad para ver las filas en el flujo de datos a medida que pasan a través de la
pipeline. SSIS implementa esta capacidad a través de los visores de datos, una
característica que puede utilizar, cuando está ejecutando los paquetes en BIDS durante
el desarrollo. Para cualquier ruta en el Data Flow, puede agregar un visor de datos que
detiene la ejecución del Data Flow y muestra los datos en el visor de datos en uno de sus
cuatro formatos.
Se agrega un visor de datos, dándo clic derecho en la ruta y luego clic en Data Viewers.
La Figura 2-16, muestra el cuadro de dialogo Data Flow Path Editor con la ficha Data
Viewers seleccionada.

74 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-16
Después de hacer clic en Add en la ficha Data Viewers, en el cuadro de dialogo Data
Flow Path Editor, se puede configurar el visor de datos. Primero tiene que elegir el tipo
del visor de datos que desea utilizar. Hay cuatro tipos disponibles:
 Grid. Muestra los datos en bruto en columnas y filas, la grilla es el visor más
comúnmente utilizado, para identificar datos a nivel de fila.
 Histogram. Se utiliza para las columnas numéricas, muestra la distribución de datos
a través de un rango.
 Scatter Plot. Revela las relaciones de datos entre dos columnas numéricas,
destacando los valores extremos.
 Column Chart. muestra los valores de resumen de una columna seleccionada, en el
Data Flow.
Después de seleccionar el tipo de visor de datos, haga clic en OK para aceptar los
valores predeterminados.
NOTA: LOS VISORES DE DATOS NO TRABAJAN CUANDO UN PAQUETE SE
EJECUTA DESDE LA LÍNEA DE COMANDOS
Puede utilizar un visor de datos, sólo cuando se ejecuta un paquete en el entorno de
depuración. Si tiene una ruta de error configurado en un paquete, será ignorado cuando
ejecute el paquete bajo una programación o de la línea de comandos.
El visor de datos más utilizado es el Grid, ya que muestra las filas actuales de los datos.
Al elegir el tipo Grid y luego ejecutar el paquete en BIDS, el visor de datos muestra un
conjunto de filas a la vez. La Figura 2-17 muestra el cuadro de dialogo Data Viewer
cuando un paquete se está ejecutando.

Figura 2-17
Después de revisar las filas, se puede optar por permitir que los datos pasen, hasta que
se completen, haciendo clic en Detach en la ventana Data Viewer, o puede mostrar el
siguiente lote de filas haciendo clic en el botón Play. Si utiliza un visor de datos en una
75 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
ruta de error, puede agregar el error y las columnas de código de error a la salida, para
identificar la columna en la fila que causó, que la fila falle en un componente.
Manejando Errores de Paquetes con los Controladores de Eventos
En el Data Flow, usar los visores de datos nos da la capacidad de depurar problemas con
facilidad, mientras se procesan los datos. El Control Flow es diferente, debido a que nos
enfocamos en el flujo de trabajo y en la ejecución, en vez de en los datos y en las
transformaciones. Aprovechando las capacidades de Visual Studio, el Control Flow
soporta la depuración visual y las características breakpoint (punto de interrupcion). En
primer lugar, veremos los controladores de eventos que ofrece SSIS y, luego
exploraremos las capacidades de depuración en el Control Flow.
SSIS ofrece la posibilidad de escuchar, para ciertos eventos de ejecución y realizar otras
operaciones, cuando un evento sucede (dependiendo del evento de ejecución). Por
ejemplo, si se produce un error, el controlador de eventos de error, puede enviar una
alerta o reparar un problema de datos. Los controladores de eventos utilizan el paradigma
de Control Flow para el procesamiento de flujo de trabajo, que incluye las mismas tareas
del Control Flow y contenedores que se encuentran en la caja de herramientas Control
Flow.
Se pueden definir cero, uno o más de un controlador de eventos para un paquete. Para
agregar un controlador de eventos a un paquete, debe hacer clic en la ficha Event
Handlers en el Diseñador SSIS. Para crear un nuevo controlador de eventos de paquete,
seleccione una tarea de la lista desplegable Executable y un evento de una lista
desplegable Event handler, como muestra la Figura 2-18.

Figura 2-18
El componente ejecutable esta en el ámbito de tarea o contenedor que activa el evento.
También puede elegir el paquete mismo (el contenedor de más alto nivel) como el
componente ejecutable para un evento. El controlador de eventos es el evento actual que
causa que el flujo de trabajo de evento se ejecute. La Tabla 2-1 describe los tipos de
controladores de eventos de paquetes.
Además, los Event Handlers asignados a un ámbito de ejecución, se propagan hacia
abajo, a los eventos hijo, cuando se activa el evento. Si un evento se asigna a un
contenedor, los archivos ejecutables hijos, incluyen las tareas y contenedores que están
incrustados, en el contenedor padre. Esto significa que si se asigna un evento OnError al
paquete y un evento OnError ocurre en una tarea, el controlador de eventos se activa
para la tarea y el paquete (y para algunos contenedores entre ellos). Puede utilizar un
controlador de eventos, para rastrear los detalles del error, para el envío de mensajes de

76 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
error, en mensajes de correo electrónico, y para implementar la lógica de recuperación
manual.
El uso de controladores de evento es una gran manera de seguir la ejecución del
paquete, se pueden utilizar para auditar la ejecución, la captura de los errores que se
producen en una tarea. Además, puede utilizar el controlador de eventos Send Mail Task
a efectos de notificación, por ejemplo, se puede notificar a un administrador de una
determinada condición predefinida que requiere una respuesta especial.
MEJORES PRÁCTICAS: CAPTURA DE INFORMACIÓN DE ERROR CON EL
EVENTO ONERROR
Cada paquete contiene un conjunto de variables de sistema que se actualizan para los
distintos niveles en el paquete durante la ejecución del paquete. Con controladores de
eventos, se pueden capturar estas variables y valores, que proporcionan información
contextual, como el ErrorCode, ErrorDescription y SourceName (la tarea), cuando se
activa el evento.
Tabla 2-1 Tipos de Event Handlers de Paquete
MANEJADOR DE EVENTO DESCRIPCION
OnError Se ejecuta cuando una tarea o un contenedor reporta un error.

OnExecStatusChanged Se ejecuta para todas las tareas y contenedores, cuando cambia el estado de
ejecución a In Process, Success o Failed.
OnInformation Se ejecuta cuando hay mensajes de información de salidas SSIS, durante
validación y ejecución de una tarea o contenedor.
OnPostExecute Se ejecuta despues de que un contenedor o tarea, se ha completado con
éxito.
OnPostValidate Se ejecuta después de un contenedor o la tarea, ha sido validada con éxito.
OnPreExecute Se ejecuta justo antes que un contenedor o tarea se ejecute.
OnPreValidate Se ejecuta antes de que el componente sea validado, por el motor.

OnProgress Ejecutada cuando un mensaje de progreso es enviado por el motor SSIS, lo


que indica el progreso tangible de la tarea o contenedor.
OnQueryCancel Se invoca cuando una tarea Execute SQL se cancela por una intervención
manual, tal como detener el paquete.
OnTaskFailed Similar a OnError, pero se ejecuta cuando una tarea falla, en vez de cada vez
que se produzca un error.
OnVariableValueChanged Se ejecuta cuando se cambia el valor en una variable, para lo cúal la
propiedad RaiseChangeEvent, se establece a True.
OnWarning Se ejecuta cuando una tarea retorna un evento de advertencia, como una
columna que no se utiliza, en un flujo de datos.

TEMAS CLAVE
Puede desactivar controladores de eventos en cualquier tarea o contenedor, establezca
la propiedad DisableEventHandlers de la tarea o contenedor a True. Así que si tiene un
controlador de eventos definido, pero no quiere que sea invocado para una tarea
específica, puede desactivar los controladores de eventos para esa única tarea.

MUNDO REAL
Una práctica común en SSIS es la creación de una plantilla de paquete SSIS, a veces
denominada plataforma de paquete, que contiene un conjunto de tareas preconfiguradas
y controladores de eventos para fines de auditoría. Entonces, cuando se empieza a crear
un nuevo paquete, se comienza con la plantilla de paquete, para que todos los paquetes
tengan el mismo registro, auditoría, configuraciones (configuraciones de SSIS se revisan

77 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
en el capítulo 3, "Implementación y configuración de paquetes SSIS"), y gestión de
eventos configurados.
Una de las primeras cosas que se hace cuando se trabaja con un cliente para
implementar una solución SSIS, es basarse en la plataforma SSIS que se ha creado a lo
largo de los años. Se incluye el registro y las tablas de auditoría, es una forma de realizar
la extracción incremental, e incluso un conjunto de reportes SQL Server Reporting
Services (SSRS) que corren las tablas para mostrar el estado de los tiempos de
ejecución y resolución de problemas. La plataforma de paquete a desarrollar debe incluir
un controlador de eventos OnError que captura la tarea de error y la descripción a una
tabla con el momento del error. Además, utilizar el controlador de eventos
OnVariableValueChanged y capturar los cambios en valores de variables en el paquete
que se está ejecutando. Todas estas funciones juntas proporcionan una buena manera
de garantizar la consistencia y tener un mejor conocimiento del entorno de ejecución
SSIS.
El inconveniente de no empezar con una plantilla de paquete, es el desafío de tratar de
añadir auditoría después de los hechos, que puede ser difícil porque está tratando de
copiar y pegar tareas y crear variables de usuario para la auditoría. Es muy
recomendable tener una plantilla de paquete ya preparada, o incluso se puede empezar
con algunas de las plataformas disponibles para copiar.
Después de haber creado un paquete que desea usar como plantilla, puede copiarlo a la
carpeta siguiente, que lo pondrá a disposición de Visual Studio (si lo tiene instalado):
C:\Archivos de programa\Microsoft Visual Studio 9.0\Common7\IDE\ PrivateAssemblies\
ProjectItems\DataTransformationProject\DataTransformationItems
Después de que su paquete se encuentra en esta carpeta de plantillas, en cualquier
momento que lo necesite para crear un nuevo paquete SSIS, seleccione el menú Proyect
en la barra de menú de Visual Studio, a continuación, seleccione Add New Item. Su
paquete aparecerá en la lista.
Depurar el Control Flow con Breakpoints
La depuración del paquete le permite saber a través del Diseñador SSIS, lo que está
sucediendo durante la ejecución de un paquete, para que pueda solucionar problemas o
para validar la lógica de procesamiento. La depuración del Control Flow consiste en
establecer puntos de interrupción en el paquete, lo que pausará la ejecución del Control
Flow para que pueda observar el estado de la ejecución. SSIS se aprovecha de la
funcionalidad del punto de interrupción que viene con Visual Studio, lo que significa que
tiene la capacidad de ver la información de la ejecución sobre el paquete, cuando se
ejecuta un paquete en el Diseñador SSIS.
IMPORTANTE: USAR BREAKPOINTS SOLO EN EL CONTROL FLOW
Los puntos de interrupción funcionan en el Control Flow, pero no en el Data Flow. Para
secuencias de comandos, esto significa que se pueden establecer puntos de interrupción,
sólo en una tarea Control Flow, Script Task, pero no en un Data Flow, Script Component
Transformation.
Para establecer un punto de interrupción, seleccione la tarea o contenedor, y, presione la
tecla F9 o vaya al menú Debug/Toggle Breakpoint. Puede establecer multiples puntos de
interrupción en un paquete, y se puede incrustar un punto de interrupción en una tarea
Script en una línea de código. La Figura 2-19, muestra un paquete que se está
ejecutando, pero se pauso la ejecución.

78 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-19
En esta pantalla, la flecha junto al icono del punto de ruptura, que aparece como un
pequeño círculo rojo que contiene una flecha amarilla, indica que la tarea del paquete
está esperando para ejecutarse. Cuando está detenida en el entorno de depuración, se
puede hacer lo siguiente para ayudar a solucionar los problemas de su paquete:
 Abra la ventana Locals para ver todos los valores de las variables y el estado del
paquete. Para abrir esta ventana, seleccione Windows y luego Locals en el menú
Debug. Si tiene varias variables en un paquete que utiliza activamente, para controlar
la lógica y la precedencia, puede utilizar un punto de ruptura para detener la
ejecución, que le permite solucionar problemas de valores de variables, manejándolos
antes que la ejecución del paquete se complete. La Figura 2-20, muestra la ventana
Locals con las variables de paquete displayadas.

Figura 2-20
 Cuando haya completado el trabajo durante una pausa y se encuentra en una tarea
Script, puede continuar la ejecución del script y el paquete al siguiente punto de
interrupción, haciendo clic en el botón Continue, en la barra de herramientas Debug o
presionando F5. Alternativamente, puede detener el paquete haciendo clic en el botón
Stop, en la barra de herramientas. Los Puntos de interrupción en una tarea Script son

79 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
muy útiles, porque ayudan a validar la lógica del código y la ramificación que está
llevando a cabo, con el script.
 Cuando el paquete se detuvo en una tarea (en lugar de en el código de una tarea
Script, como se describe en el elemento de la lista anterior) en el Control Flow,
también se puede seguir ejecutando el paquete hasta el final (o al siguiente punto de
interrupción) dándole clic al botón Continue en la barra de herramientas Debug, o
pulsando F5.
 Puede detener el paquete durante la ejecución, si el paquete está en pausa en un
punto de interrupción o ejecutandose, haciendo clic en el botón Stop en la barra de
herramientas o pulsando Shift + F5.
Por todo, los puntos de interrupción son herramientas poderosas para resolver los errores
y la funcionalidad de validación. En combinación con los visores de datos en el Data
Flow, nos proporcionan soporte a la depuración integral en el desarrollo de su paquete.
PRACTICA: Identificar Errores en el Data Flow
En esta práctica, agregaremos una ruta de flujo de error y luego identificaremos el error,
mediante la observación de las filas en la salida, a través de un visor de datos.
EJERCICIO 1: Añadir rutas de flujo de errores
En este ejercicio, se va a usar la ruta de error para manejar los errores de inserción,
cuando una restricción es violada y luego usar un visor de datos para identificar el error.
1. En SSMS, crear una nueva consulta de base de datos, conectada a la base de datos
de ejemplo AdventureWorks2008R2, y ejecutar el siguiente código.
USE [AdventureWorks2008R2]
GO
TRUNCATE TABLE dbo.Sales_Summary
GO
ALTER TABLE dbo.Sales_Summary WITH CHECK
ADD CONSTRAINT [CK_Summary_ProductLine]
CHECK ((upper([ProductLine])='R' OR upper([ProductLine])='M'
OR upper([ProductLine])='T'))
GO
El código anterior utiliza la tabla Sales_Summary que se creó en el Capítulo 1 y fue
usado en las Lecciones 1 y 2 de este Capítulo.
2. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto PLibroSSIS y, a continuación, edite el paquete MyPackage.dtsx que
se ha modificado en la Lección 2, haciendo doble clic en el Solution Explorer.
3. Haga clic en la ficha Data Flow en el Diseñador SSIS, haga clic derecho en el
adaptador de destino OLE DB, a continuación, haga clic en Edit.
4. En la lista desplegable Data access mode, seleccione Table or View y, a continuación,
compruebe que la tabla Sales_Summary está aún seleccionada en la lista
desplegable Name of the table or the view.
5. Haga clic en OK en el cuadro de dialogo OLE DB Destination Editor para volver al
Diseñador SSIS.
6. Haga clic derecho en el espacio de trabajo Data Flow, a continuación, haga clic en la
tarea Execute Task para ejecutar la tarea Data Flow. Antes de parar el paquete, haga
clic en la ficha Progress y observe que el adaptador de destino OLE DB falla a causa
de una violación de restricción.
7. Detener el paquete para volver al Diseñador SSIS. Haga clic en la ficha Control Flow,
y haga clic en alguna parte del control de flujo que no sea una tarea o un contenedor
para anular la selección de objetos.
8. Elegir las variables en el menú SSIS, abrir la ventana Variables.

80 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
9. Haga clic en Add Variable (el botón más a la izquierda en la ventana de barra de
herramientas Variable) para crear una nueva variable para el paquete, y luego
nombre la variable a ErrorCount. De nuevo, asegúrese de que está en la ficha
Control Flow y que no hay una tarea o contenedor seleccionado. Esto asegura que la
variable se crea a nivel de paquete.
10. Volver al Data Flow, y mostrar la barra de herramientas. Arrastre una transformación
Row Count al área de trabajo Data Flow.
11. Seleccione el adaptador de destino OLE DB y, a continuación, arrastre la ruta de
salida de error rojo a la transformación Row Count.
12. Cuando el cuadro de dialogo Configure Error Output aparece, cambie el valor en la
lista desplegable de la columna Error a Redirect Row, a continuación, haga clic en OK
para regresar a la superficie de diseño del Data Flow.
13. Abra la transformación Row Count haciendo doble clic en él, y luego cambiar la
propiedad VariableName a User::ErrorCount.
14. Haga clic en OK en el cuadro de diálogo Advanced Editor for Row Count para volver a
la ficha Data Flow del Diseñador SSIS.
15. Haga clic derecho en la ruta de error roja, a continuación, haga clic en Data Viewers.
16. Haga clic en Add en el Data Flow Path Editor, seleccione Grid en la lista Type, haga
clic en OK en el cuadro de diálogo Configure Data Viewer, y luego haga clic en OK en
el cuadro de dialogo Data Flow Path Editor.
17. Haga clic derecho en la superficie de diseño Data Flow, a continuación, haga clic en
Execute Task.
18. Un nuevo visor de datos aparece, que revela las filas OLE DB Destination Error
Output. Observe que la columna ProductLine para todas las filas de error es "S", que
viola la restricción definida que creó en el paso 1.
19. Haga clic en el botón Detach en la ventana Data Viewer, y luego detenga la ejecución
del paquete.
20. En SSMS, ejecute siguiente consulta de bases de datos, que añade: "S" como un
valor válido de la columna ProductLine en la tabla Sales_Summary.
USE [AdventureWorks2008R2]
GO
ALTER TABLE dbo.Sales_Summary
DROP CONSTRAINT [CK_Summary_ProductLine]
GO
ALTER TABLE dbo.Sales_Summary WITH CHECK
ADD CONSTRAINT [CK_Summary_ProductLine]
CHECK ((upper([ProductLine])='R' OR upper([ProductLine])='M'
OR upper([ProductLine])='T' OR upper([ProductLine])='S'))
GO
21. Volver a BIDS y vuelva a ejecutar el Data Flow, observando que el destino OLE DB es
ahora exitoso, sin filas que se dirigen a la ruta de salida de error o al visor de datos.
EJERCICIO 2: Uso de Event Handlers - Inventario
Este ejercicio muestra cómo utilizar controladores de eventos, mediante la creación de
una simulación, que comprueba el estado del inventario, de algunos productos al azar, de
AdventureWorks. Para este ejercicio, se empieza por la creación de un nuevo paquete
SSIS, que realiza varios pasos; seguido se define un controlador de eventos OnError,
para que se dispare, cuando se produce un error; y por último, utiliza el evento
OnPreExecute, para capturar detalles de la ejecución del paquete.
1. Ejecute este script en SQL Server Management Studio, sobre la base de datos
AdventureWorks2008R2, para crear las tablas y un procedimiento almacenado, que
se usará en el ejercicio:
USE AdventureWorks2008R2

81 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
GO
CREATE TABLE InventoryCheck (
ProductID INT )
GO
CREATE TABLE InventoryWarning (
ProductID INT, ReorderQuantity INT )
GO
CREATE TABLE MissingProductID (
ProductID INT )
GO
CREATE PROC usp_GetReorderQuantity @ProductID INT,
@ReorderQuantity INT OUTPUT AS
IF NOT EXISTS(SELECT ProductID FROM Production.ProductInventory
WHERE ProductID = @ProductID) BEGIN
RAISERROR(‘InvalidID’,16,1)
RETURN 1
END
SELECT @ReorderQuantity = SafetyStockLevel - SUM(Quantity)
FROM Production.Product AS p
INNER JOIN Production.ProductInventory AS i
ON p.ProductID = i.ProductID
WHERE p.ProductID = @ProductID
GROUP BY p.ProductID, SafetyStockLevel
RETURN 0
GO
2. Crear un nuevo paquete de SSIS y nómbrelo como Inventario.dtsx.
3. Añadir un señalador Connection Manager a la base de datos
AdventureWorks2008R2, utilizando el proveedor ADO.NET. En este ejemplo se utiliza
la tarea Execute SQL, con parámetros. Los parámetros trabajan de manera diferente,
dependiendo de qué proveedor se está utilizando. Por ejemplo, los parámetros
utilizados con el proveedor OLE DB, se nombran numéricamente a partir de cero. Los
parámetros utilizados con el proveedor ADO.NET, usan nombres que comienzan con
el símbolo @.
4. Configure las variables, como en la tabla siguiente. (Haga clic en el área Control Flow,
justo antes de abrir la ventana Variables, de modo que el alcance de las variables,
estarán en el nivel de paquete).
Nombre Ambito Tipo de Dato Valor
Contador Inventario Int32 0
ProductID Inventario Int32 0
ReorderQuantity Inventario Int32 0
5. Arrastre un contenedor Sequence, al área de diseño Control Flow y nómbrelo como
Verificar Inventario. Puede utilizar un contenedor Sequence para agrupar tareas,
tratando las tareas como una unidad, en el flujo de trabajo del paquete. En este caso
se le va a utilizar, para experimentar con los controladores de eventos. Establezca la
propiedad MaximumErrorCount de Verificar Inventario a 9999 en la ventana Property.
Este ejemplo aumentará errores por diseño, y configurará la propiedad
MaximumErrorCount, para que permita a la simulación, seguir corriendo, tras el
disparo de errores.
6. Arrastre una tarea Execute SQL en el contenedor Verificar Inventario, y nómbrela
como Tablas Vacias. Doble clic en la tarea para abrir el Execute SQL Task Editor.
Primero cambie la propiedad ConnectionType a ADO.NET. Establezca la propiedad
Connection, para que apunte al Connection Manager de AdventureWorks2008R2.
Haga clic en el botón de puntos suspensivos, junto a la propiedad SQLStatement y
escriba lo siguiente, en la ventana Enter SQL Query:
DELETE FROM MissingProductID
DELETE FROM InventoryWarning

82 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
DELETE FROM InventoryCheck
7. Haga clic en OK para aceptar las declaraciones, y OK una vez más, para aceptar los
cambios en Execute SQL Task Editor.
8. Arrastre un contenedor For Loop dentro del contenedor Verificar Inventario, y
nómbrelo como Simulador Consulta Inventario. Doble clic en el Simulador Consulta
Inventario y rellene las propiedades, como se muestra en la siguiente tabla:
Propiedad Valor
InitExpression @Contador = 1
EvalExpression @Contador <= 50
AssignExpression @Contador = @Contador + 1
9. Haga clic en OK para aceptar la configuración.
10. Establezca la propiedad MaximumErrorCount del Simulador Consulta Inventario a
9999 en la ventana Properties.
11. Arrastre una restricción de precedencia de tarea Tablas Vacias hacia el Simulador
Consulta Inventario.
12. Arrastre una tarea Script dentro del contenedor Simulador Consulta Inventario, y
nómbrelo como Generar ProductID.
13. Doble clic para abrir el Script Task Editor. Seleccione el panel Script. Establezca la
propiedad ReadWriteVariables a User::ProductID, como muestra la Figura 2-21.

Figura 2-21
14. Compruebe la propiedad ScriptLanguage. Si esta propiedad se establece en Microsoft
Visual C # 2008, cámbiela en la lista desplegable a Microsoft Visual Basic 2008.
15. A continuación, haga clic en Edit Script, para abrir el entorno de diseño, de Visual
Studio. Utilizará esta tarea Script, para generar un ProductID aleatorio. Reemplace
Sub Main con el siguiente código:
Public Sub Main()
Randomize()
Dts.Variables(“User::ProductID”).Value = CInt(Int((900 * Rnd()) + 1))
Dts.TaskResult = ScriptResults.Success
End Sub
16. Cierre el entorno de diseño Script de Visual Studio y haga clic en OK para aceptar los
cambios, en la tarea Script.
17. Agregar una tarea Execute SQL para el Simulador Consulta Inventario y nómbrelo
como Verificar Nivel Inventario.
18. Arrastre una restricción de precedencia desde Generar ProductID a Verificar Nivel
Inventario.
19. Doble clic en la tarea Verificar Nivel Inventario para abrir el Execute SQL Task Editor.

83 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
20. Establezca la propiedad ConnectionType a ADO.NET.
21. Establezca el Connection Managers de AdventureWorks2008R2, de la lista de
conexiones y cambie la propiedad SQLStatement a usp_GetReorderQuantity.
Seguidamente cambie el IsQueryStoredProcedure a True. Esta tarea llamará a la
usp_GetReorderQuantity con dos parámetros. La propiedad ResultSet se debe
establecer a None, ya que está usando un parámetro de salida, para obtener el valor
ReorderQuantity, desde el procedimiento almacenado. El panel General de la
Execute SQL Task Editor debe ser similar a la Figura 2-22.

Figura 2-22
22. En el panel Parameter Mappings, configurar los parámetros como en la siguiente
tabla:
Nombre Variable Dirección Tipo de Dato Nombre Parámetro
User::ProductID Input Int32 @ProductID
User::ReorderQuantity Output Int32 @ReorderQuantity
23. Haga clic en OK para aceptar la configuración. Como se describió anteriormente,
establezca la propiedad MaximumErrorCount de la tarea Verificar Nivel Inventario a
9999, usando la ventana Properties.
24. Agregar otra tarea Execute SQL y nómbrelo como Insertar Advertencia. Esta tarea
se puede utilizar para insertar una fila en la tabla InventoryWarning, cada vez que el
inventario actual, es menor que el punto de pedido establecido, para un producto en
particular. Conecte Verificar Nivel Inventario a Insertar Advertencia.
25. Doble clic en la restricción de precedencia y establezca propiedad Evaluation
Operation a Expression and Constraint.
26. Establezca la propiedad Expression a @ReorderQuantity>0 y dejar la propiedad
Value a Success (ver Figura).
27. Haga clic en OK para aceptar los cambios, en la restricción de precedencia. La
ventana se muestra, como en la Figura 2-23.

84 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 2-23
28. Doble clic en la tarea Insertar Advertencia y establecer el ConnectionType a
ADO.NET.
29. Elija el Connection Manager AdventureWorks2008R2 de la lista Connection y haga
clic en los puntos suspensivos, junto a SQLStatement y escriba esto, en el cuadro de
diálogo Enter SQL Query:
INSERT INTO InventoryWarning (ProductID, ReorderQuantity)
SELECT @ProductID, @ReorderQuantity
30. Haga clic en OK para aceptar el comando. En el panel Parameter Mapping, configure
dos parámetros, como se muestra en la siguiente tabla. En este caso, ambos serán
parámetros de entrada.
Nombre Variable Dirección Tipo de Dato Nombre Parámetro
User::ProductID Input Int32 @ProductID
User::ReorderQuantity Input Int32 @ReorderQuantity

31. Haga clic en OK para aceptar la configuración. El paquete debe parecerse a la Figura
2-24.

Figura 2-24
Cuando se ejecuta el paquete, a veces la tarea Verificar Nivel Inventario fallará. El
script Generar ProductID no siempre generará un ProductID válido. Cuando esto
sucede, el procedimiento almacenado generará un error y hará que la tarea Verificar
Nivel Inventario falle. Debido a que las propiedades FailParentOnFailure y
FailPackageOnFailure se establece a False de forma predeterminada, y la

85 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
propiedad MaximumErrorCount se establece a 9999, en las tareas y contenedores
padres, el paquete continuará funcionando a través de la simulación, incluso después
de un fracaso de esta tarea.
Te darás cuenta de que una vez que la tarea Verificar Nivel Inventario falla, se vuelve
roja, pero la simulación continuará ejecutándose y el bucle causará que el color
cambie, entre rojo y verde. Una excelente manera de ver lo que está sucediendo,
cuando se ejecuta el paquete, es hacer clic en la ficha Progress. Esto también es una
fantástica herramienta de solución de problemas, con información detallada de cada
paso. Una vez que el paquete se completa y la depuración se detiene, puede
continuar viendo la información, en la ficha Execution Results.
Después de ejecutar el paquete, puede ver los resultados de la consulta de la tabla
InventoryWarning para ver la filas que se insertan cuando la variable
User::ReorderQuantity es mayor que 0. Ejecute esta consulta en SQL Server
Management Studio:
SELECT * FROM InventoryWarning
32. El paquete que acaba de crear, es casi seguro que generará algunos errores, en la
tarea Verificar Nivel Inventario, cada vez que se ejecuta. Se podría añadir una tarea
conectado a Verificar Nivel Inventario con la Restricción de precedencia establecida a
Failure; pero en este caso se va a crear un controlador de eventos, para agregar una
fila a la tabla MissingProductID, cada vez que la tarea Verificar Nivel Inventario falla.
33. Haga clic en la ficha Event Handlers. Debido a que puede tener un gran número de
controladores de eventos en un paquete, debe seleccionar el objeto y el evento de la
lista desplegable.
34. Haga clic en la lista desplegable Executable para ver los objetos del paquete, en una
jerarquía. El paquete tiene un hijo, Verificar Inventario, el cual tiene hijos Tablas
Vacias, Simulador Consulta Inventario, etc (ver Figura 2-25).

Figura 2-25
35. Select Verificar Nivel Inventario y haga clic en OK para cerrar la lista.
36. Elija OnError en la lista Event handler, si no está por defecto. Debe hacer clic en el
enlace "Click here to create an 'OnError' event handler for executable 'Verificar Nivel
Inventario'”, para crear el nuevo controlador de eventos. La pantalla cambiará a un
área de diseño muy similar a la ficha Control Flow. Ahora puede arrastrar cualquier
tarea de nivel Control Flow o Contenedor, al área de diseño. En este caso va a
agregar una tarea Execute SQL, que agregará una fila a la tabla MissingProductID,
cada vez que la tarea Verificar Nivel Inventario falla.
37. Los controladores de eventos pueden ser tan simples o tan complejos como necesita
que sean. Toda la funcionalidad disponible en el nivel Control Flow, está disponible en
el nivel Event Handler, incluyendo la capacidad de agregar un controlador de eventos
a un controlador de eventos.
38. Arrastre una tarea Execute SQL al área de diseño Event Handler y nómbrelo como
Insertar ProductID Faltante.

86 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
39. Doble clic en la tarea para abrir el Execute SQL Task Editor.
40. Cambie la Connection Type a ADO.NET.
41. Elija el Connection Manager AdventureWorks2008R2 de la lista Connection. Haga clic
en los puntos suspensivos, junto a la propiedad SQLStatement, para abrir el cuadro
de diálogo Enter SQL Query. Escriba la siguiente declaración:
INSERT INTO MissingProductID (ProductID) SELECT @ProductID
42. Haga clic en OK para aceptar la consulta y luego cambiarse al panel Parameter
Mapping. Añada un parámetro con las propiedades que se muestran, en la siguiente
tabla:
Nombre Variable Dirección Tipo de Dato Nombre Parámetro
User::ProductID Input Int32 @ProductID

43. Haga clic en OK para aceptar la configuración.


Ahora, cuando se ejecuta el paquete, el nuevo controlador de eventos se activará,
cada vez que la tarea Verificar Nivel Inventario genera un error. Puede consultar la
tabla MissingProductID para ver los resultados, mediante la ejecución de esta
consulta, en SQL Server Management Studio:
SELECT * from MissingProductID
44. Suponga que desea llevar un registro de todos los números ProductID, que se
probaron. Añadir otro controlador de eventos para la tarea Verificar Nivel Inventario.
Con Verificar Nivel Inventario seleccionado en la lista Executables, seleccione
OnPreExecute bajo Event Handler.
45. Haga clic en el enlace para crear el controlador.
46. Agregar una tarea Execute SQL al área de diseño Event Handler y nómbrelo como
Registro ProductID.
47. Doble clic para abrir el Execute SQL Task Editor.
48. Cambie la propiedad ConnectionType a ADO.NET.
49. Seleccione el Connection Manager AdventureWorks2008R2 de la lista Connection.
50. Añadir esta declaración a la propiedad SQLStatement, escribiendo en el cuadro de
texto Property o usando el cuadro de dialogo Enter SQL Query:
INSERT INTO InventoryCheck (ProductID) SELECT @ProductID
51. Agregar un parámetro @ProductID, en el panel Parameter Mapping, con exactamente
las mismas propiedades, que el añadido a la tarea evento OnError, como muestra la
siguiente tabla.
Nombre Variable Dirección Tipo de Dato Nombre Parámetro
User::ProductID Input Int32 @ProductID

52. Haga clic en OK para aceptar la configuración y ejecutar el paquete.


Una vez que la ejecución del paquete se ha completado, vuelva a SQL Server
Management Studio para ver los resultados mediante la ejecución de las siguientes
consultas:
SELECT * FROM InventoryCheck
SELECT * FROM MissingProductID
SELECT * FROM InventoryWarning
La tabla InventoryCheck debe tener una fila para cada ProductID que se generó. Esta
fila fue ingresada en el evento OnPreExecute, Verificar Nivel Inventario; en otras
palabras, antes de que la tarea sea realmente ejecutada. La tabla MissingProductID
debería tener varias filas, una por cada ProductID, que causó la
usp_GetReorderQuantity para elevar un error. Estas filas se agregaron en el evento
OnError, Verificar Nivel Inventario. Finalmente, la tabla InventoryWarning tendrá
algunas filas, si el nivel de inventario de alguno de los productos fue baja. Estas filas
se agregan a nivel Control Flow.
Comprobación Rápida
87 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
1. Una transformación Data Conversion está fallando en medio de la ejecución del Data
Flow, y es necesario determinar qué está causando el error. ¿Cómo se debe
proceder?
2. Su paquete contiene una variable de cadena que se va a actualizar, mediante una
tarea Script, para ser una ruta de archivo y un nombre de archivo. Su paquete está
fallando en una tarea File System, que está configurado para utilizar la variable, para
mover el archivo a otra carpeta en el servidor. ¿Cómo solucionar el problema en el
paquete?
3. Le gustaría registrar todos los errores de paquete, a una tabla de base de datos
personalizada, que ha creado con fines de auditoría. ¿Cómo se puede realizar esta
tarea?
Respuestas a la comprobación rápida
1. Para determinar qué está causando el error, configure la ruta de error de la
transformación Data Conversion a Flat File, para que las filas que están fallando en la
conversión sean enviadas a un archivo. A continuación, cree un visor de datos en la
ruta de error, y ejecute el paquete en BIDS. Esta técnica capturará los errores en un
archivo y mostrará las filas en el Diseñador SSIS, para solucionar los problemas.
2. Debido a que la tarea Script puede contener puntos de interrupción incrustados en el
código, establezca un punto de interrupción en el script, para que pueda ejecutar el
paquete y los pasos a través de las líneas de código, observando el valor de la
variable para revisar el código y la precisión.
3. Al utilizar el controlador de evento OnError, asignado a nivel de paquete, también
puede utilizar una tarea Execute SQL, que llame a un procedimiento almacenado,
pasando valores de variable en la SourceName y ErrorDescription. El procedimiento
puede entonces rastrear estos detalles, en una tabla de almacenamiento de
metadatos, para auditoría.
Escenario Posible: Solución de problemas y manejo de errores en
Paquetes SSIS
Está creando un conjunto de paquetes SSIS, que mueven los datos de un sistema
transaccional fuente a tablas data mart. A medida que desarrolla los paquetes, se
necesita una manera de solucionar los problemas, tanto en el desarrollo Control Flow
como en el desarrollo Data Flow. También es necesario asegurar que los datos en su
base de datos de destino, estén en un estado consistente y no en un estado intermedio,
cuando se produce un error. Además, es necesario proporcionar una auditoría de la
información, y crear alertas en el diseño de su paquete. ¿Cómo manejaría los siguientes
requerimientos durante el desarrollo y la aplicación del paquete?
1. En SSIS, es necesario utilizar técnicas de depuración en Control Flow y Data Flow
para acelerar el desarrollo de paquetes y soluciones de problemas para que pueda
completar sus paquetes rápidamente, con un mínimo de frustración.
2. Cada tabla de destino en su data mart, debe tener las inserciones, actualizaciones y
eliminaciones totalmente completas y entregadas, o necesita deshacer los cambios
para que la tabla está en un estado coherente. También necesita una forma de
reiniciar los paquetes desde el punto de falla.
3. Necesita capturar el número de filas que se insertan en el destino, dentro de su data
mart y el momento en que la última fila fue enviada a cada destino, en los flujos de
datos.
4. Cuando un paquete falla, inmediatamente se debe enviar mensajes de correo
electrónico, que identifique la tarea que falló y describir el error en detalle.
Resumen del Capítulo

88 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
 Al ejecutar paquetes en el Diseñador SSIS en BIDS, el entorno de depuración
muestra el estado de ejecución de las tareas, el número de filas de las
transformaciones, y los resultados de la ejecución.
 SSIS incluye el registro de paquetes que pueden capturar eventos, durante la
ejecución de un paquete, como los errores, las advertencias y las horas de inicio y fin
de la solución de problemas de paquetes, cuando se produce un fallo fuera de BIDS.
 El Control Flow incluye restricciones de precedencia flexibles, para manejar flujos de
trabajo exitosos, fallidos y completados; y expresiones más complicadas y
precedencias lógicas AND/OR. Además, los controladores de eventos le dan la
capacidad para ejecutar los procesos cuando las condiciones, que ha definido se
cumplan.
 El Data Flow permite el enrutamiento de filas fallidas a una ruta de error e incluye
visores de datos que le dan la capacidad de observar los datos, durante la ejecución a
medida que se está desarrollando el paquete.
 Mediante el uso de puntos de interrupción durante la depuración del paquete, se
puede hacer una pausa durante la ejecución de un paquete, para observar la
información de estado del paquete, para que pueda solucionar los problemas
potenciales.

89 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
CAPITULO 3
Implementación y configuración de paquetes
SSIS

U na vez que se ha finalizado el desarrollo de SQL Server Integration Services (SSIS),


como se discutió en el capítulo 1, "Desarrollando Paquetes SSIS", y el capítulo 2,
"Depuración y tratamiento de errores en SSIS", lo siguiente es hacer que los
paquetes queden listos para su ejecución. Para ello, debe configurar el entorno y los
paquetes de manera que esten listos para ser desplegados, en un nuevo entorno.
También puede configurar los paquetes para que sean dinámicos, para que fácilmente
manejen los cambios en las conexiones y propiedades.
Para la implementación, prepare los paquetes para realizar diversos ajustes del entorno,
tales como cadenas de conexión y rutas de archivos, sin editar manualmente cada
paquete. A continuación, deberá moverlos a un nuevo servidor. SSIS incluye métodos
para la configuración de los paquetes y para el manejo del proceso de implementación.
Este capítulo explica cómo configurar el paquete para eliminar la necesidad de hacer
cambios, a medida que se mueve de un ambiente a otro y luego explica cómo utilizar el
Business Intelligence Development Studio (BIDS) para implementar un paquete.
Objetivos de examen en este capítulo:
 Implementar el comportamiento dinámico de un paquete mediante el uso de Property
Expressions.
 Implementar configuraciones de paquetes.
 Implementar una solución SSIS.
 Identificar y resolver problemas relacionados con la implementación de soluciones
SSIS.
Antes de empezar
Para completar este capítulo, debe tener:
 Conocimiento de cómo trabajar con Business Intelligence Development Studio (BIDS),
para crear nuevos paquetes y desarrollar objetos básicos.
 Experiencia de trabajo en SQL Server Management Studio (SSMS), para conectarse
a bases de datos.
 Comprensión de los fundamentos de la copia de archivos y seguridad.
 Conocimiento de las variables de entorno del sistema.

Lección 1: Usando Configuraciones de Paquetes y


Expresiones
SSIS provee configuraciones de paquetes, que le permiten actualizar propiedades,
valores de variables, y conexiones en tiempo de ejecución. Puede hacer que el paquete
mire a una fuente externa, por una información de configuración, que cambie la
configuración en el paquete, cuando se ejecute. Las configuraciones de paquetes son
opcionales, pero ofrecen varias ventajas en el entorno de ejecución, como permitirle
actualizar la configuración de paquetes, sin tener que abrir cada paquete en BIDS.
También le dan una ubicación central para las configuraciones, que pueden ser
compartidas entre los paquetes. Por ejemplo, utilizar las configuraciones de paquete le
permite mantener las cadenas de conexión y las configuraciones de variables, de todos
los paquetes, en un solo lugar. Esto le puede ahorrar tiempo y esfuerzo, cuando necesite
cambiar varios paquetes, para implementarlos, a un nuevo entorno de servidor.

90 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Entendiendo las Configuraciones de Paquete
Cuando se trabaja en BIDS, todos los valores que se establecen durante el desarrollo, se
almacenan como XML en el archivo del paquete .dtsx; el paquete también se almacena
en el archivo .dtsx. El archivo se encuentra en la carpeta en la que creó el proyecto SSIS.
Cuando se ejecuta el paquete, ya sea en el entorno de desarrollo o en otro modo (véase
el Capítulo 4, "Administración, Seguridad y ejecución de paquetes SSIS"), la primera
acción que toma un paquete es mirar sus configuraciones y sobrescribir los ajustes
actuales del paquete, con los nuevos ajustes de la configuración. Algunos elementos
comunes que son configurados, usando las configuraciones de paquete son:
 Propiedades de conexión. Estas incluyen la cadena de conexión en sí, el nombre
del servidor, y el nombre de usuario y contraseña de la conexión.
 Propiedades de variables de paquete. Estas incluyen valores de las variables,
descripción de las variables, y la propiedad Raise Change Event.
 Propiedades de paquete. Esto incluye cualquier propiedad que se defina a nivel de
paquete, como las opciones de transacción a nivel de paquete, la configuración de
punto de verificación y la configuración de seguridad.
 Propiedades de tareas y contenedores. Estas incluyen valores de la transacción a
nivel de contenedor o a nivel de tarea y propiedades específicas directamente
relacionadas a la tarea o al tipo de contenedor.
IMPORTANTE: LAS PROPIEDADES DE COMPONENTES DATA FLOW NO PUEDEN
SER ACTUALIZADAS POR LAS CONFIGURACIONES
La mayoría de las propiedades Data Flow, no se pueden configurar mediante el uso de
configuraciones de paquetes. Puedes configurar sólo el contenedor Data Flow en sí. Sin
embargo, para configuraciones externas, hay formas de hacer algunos componentes
Data Flow dinámicos en tiempo de ejecución, como por ejemplo mediante el uso de
variables y expresiones SSIS, para modificar propiedades.
Activar Configuraciones de Paquetes SSIS
Por defecto, cada paquete tiene sus configuraciones de paquete desactivadas. Para
trabajar con configuraciones, se utiliza el Package Configurations Organizer, lo que le
permite realizar las siguientes tareas:
 Activar o desactivar las configuraciones de un paquete.
 Añadir y eliminar las configuraciones asignadas al paquete.
 Definir el orden en que se aplican las configuraciones.
Para abrir el Package Configurations Organizer, abra el paquete al que desea activar las
configuraciones, y elija Package Configurations en el menú SSIS. La Figura 3-1, muestra
el cuadro de dialogo Package Configurations Organizer.
Para activar las configuraciones de un paquete, seleccione la casilla de verificación
Enable package configurations en la parte superior del cuadro de diálogo, como se
muestra en la Figura 3-1.

91 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 3-1
Creando una configuración
Después de activar las configuraciones de paquetes, el siguiente paso es crear o editar
las configuraciones. Para crear una nueva configuración, haga clic en Add en el cuadro
de diálogo Package Configurations Organizer para abrir el Package Configuration Wizard.
La Figura 3-2, muestra la primera página del asistente (después de la página de
bienvenida) con la lista desplegable Configuration Type expandida.

Figura 3-2
En la página Select Configuration Type, escoja un tipo de configuración. La Tabla 3-1
describe los tipos de configuración que puede elegir.
Elegir la configuración más apropiada para su entorno y requerimientos del proyecto.
Asegúrese de tener en cuenta cómo los paquetes serán soportados en un entorno de
producción y cómo otras tecnologías son compatibles y configuradas. Si las
configuraciones incluyen información de la cadena de conexión, asegúrese de evaluar los
requisitos de seguridad y requerimientos de la industria, que necesita cumplir.
Los tipos de configuración más usados son XML Configuration File y SQL Server. Demos
un vistazo más de cerca a cada uno de estos tipos.
Tabla 3-1: Tipos de Configuración
TIPO DESCRIPCION
XML Configuration File Almacena los ajustes de configuración en un archivo XML, en el sistema de

92 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
archivos. Seleccione XML Configuration File si se siente cómodo trabajando con
archivos de configuración y los requerimientos de su proyecto le permiten,
almacenar información de configuración, en un archivo del sistema de archivos.
Puede almacenar múltiples configuraciones en un único archivo XML.
Guarda la información de configuración dentro de una colección de variables
globales del sistema, llamada environment variable. Cuando se agrega una
Environment Variable
configuración Environment Variable, puedes elegir sólo una propiedad para cada
configuración Environment Variable.
Le permite guardar las propiedades del paquete y la configuración en el registro de
Registry Entry su computadora. Puede seleccionar varios ajustes de configuración a la vez y
guardarlos en el registro.
Proporciona una forma de heredar el valor de una variable de un paquete padre.
Cuando un paquete se ejecuta desde otro paquete SSIS usando la tarea Execute
Parent Package Variable Package, los valores de sus variables están disponibles para el paquete hijo a
través de la configuración Parent Package Variable. Con este tipo de configuración,
puede elegir sólo una propiedad de ajuste de paquete a la vez.
Utiliza una tabla de SQL Server para almacenar la información de configuración del
SQL Server paquete. Este ajuste de configuración le permite almacenar varias configuraciones
en una sola tabla.

Creación de un archivo de configuración XML


Si elige el tipo XML Configuration File, puede especificar la ubicación de su archivo de
configuración. La Figura 3-3, muestra la opción donde se puede configurar, para el tipo
XML Configuration File.
Hay dos maneras de especificar la ubicación del archivo XML:
 Puede escribir el nombre del archivo en el cuadro Configuration File Name. Esto es,
en cierto sentido, colocar codigo forzado, para la ubicación de configuración. Pero si
el archivo de configuración tiene siempre la misma ubicación y nombre, esta es una
buena opción ya que simplifica el entorno de configuración.

Figura 3-3
 Si lo prefiere, puede utilizar una variable de entorno, que contiene la ubicación del
archivo de configuración. Para utilizar este método, es necesario crear una variable
de entorno del sistema, en las propiedades de sistema de su computadora. El valor
de la variable de entorno debe contener la ruta completa, el nombre y la extensión del
archivo.
TEMAS CLAVE

93 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Cuando se utiliza una variable de entorno como puntero, en el archivo XML, se le
denomina indirect configuration. Las configuraciones indirectas son útiles, cuando la
ubicación del archivo cambia, del servidor de desarrollo al servidor de implementación.
Para utilizar la configuración indirecta, primero tienes que crear el archivo utilizando el
asistente y luego volver a editar la configuración y asignar la variable de entorno.
Utilizar una variable de entorno para el puntero de ubicación del archivo, es llamada
indirect file location approach y es muy valiosa, si la ubicación del archivo XML o el
nombre del archivo puede cambiar en el futuro o cambia entre entornos. Si elige utilizar
una variable de entorno, asegúrese de agregarla a los servidores, para el paquete que se
ejecutará.
Puede utilizar Propiedades del Sistema para crear una variable de entorno. Para Abrir
Propiedades del Sistema en Windows 7, en el Panel de Control, abra Sistema y, a
continuación, haga clic en Configuración Avanzada del Sistema y luego la opción
Variables de entorno. En Windows Server 2008, haga clic en la ficha Avanzado. Haga clic
en Variables de Entorno para mostrar el cuadro de diálogo Variables de Entorno, como se
muestra en la Figura 3-4.

Figura 3-4
Asegúrese de hacer clic en el botón Nueva, en la sección Variables del Sistema, para que
la variable de entorno este disponible para todas las aplicaciones. El valor de la variable
de entorno debe contener la ruta completa, incluyendo el nombre y la extensión del
archivo de configuración SSIS. Por último, asegúrese de cerrar y reiniciar BIDS para que
pueda ver la nueva configuración creada.
Así como en todos los tipos de configuración, más de un paquete puede utilizar el mismo
XML Configuration File. Así que si tiene varios paquetes que tienen propiedades
comunes, tales como cadenas de configuración, es posible que desee que todos ellos,
utilicen un archivo XML para las configuraciones.
A continuación, es necesario definir la configuración del servidor y las propiedades que el
XML Configuration File debe contener. Debido a que son comunes entre todos los tipos
de configuración, vamos a revisar la configuración SQL Configuration antes de describir
la configuración del servidor y la definición de la propiedad.
Creación de una configuración SQL Server
Si decide guardar sus configuraciones de paquete en una tabla SQL Server, seleccione
SQL Server de la lista desplegable Configuration Type en el Package Configuration
Wizard. Usar SQL Server como el mecanismo de almacenamiento de configuraciones,
requiere un grupo diferente de valores, de los que usan otros tipos de configuración, tales
como el que el XML Configuration File utiliza. La Figura 3-5 muestra las opciones de
configuración de SQL Server disponibles para establecer configuraciones.

94 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Figura 3-5
Al igual que XML Configuration File Type, puede especificar una variable de entorno
como la ubicación de su configuración (que es el nombre del data source), o puede
especificar los parámetros de configuración directamente. El tipo de configuración SQL
Server tiene varios ajustes. Utilizar SQL Server como el área de almacenamiento,
requiere la definición de detalles de la ubicación de la tabla. La Tabla 3-2 describe las
opciones de configuración para el tipo de configuración SQL Server.
TEMAS CLAVE
Los paquetes pueden compartir configuraciones SQL Server, incluso si se ejecutan en
servidores diferentes, porque la configuración de SQL Server no tiene que ser
almacenada en el servidor local, a diferencia de los otros tipos de configuración.
Tabla 3-2 Opciones de Configuracion para SQL Server
PROPIEDAD DESCRIPCION
Debería ser una conexión basada en SQL Server, que establece el servidor y la
base de datos, en la que sus configuraciones serán almacenadas, y de la cual se
Connection
leerá. Si la conexión no existe, puede hacer clic en New al lado de Connection
para abrir el cuadro de dialogo Configure OLE DB Connection Manager.
La tabla de configuración es la tabla en la que las configuraciones se encuentran.
Esta tabla tiene como requisitos estrictos, un nombre de columna y un tipo de
datos. Para crear la tabla, puede hacer clic en New cerca de Configuration Table
Configuration Table
para abrir el cuadro de diálogo Create Table, en el que se puede cambiar el
nombre de la tabla y ejecutar la instrucción de creación de tablas en la conexión,
que ha especificado.
Múltiples configuraciones de SQL Server, pueden compartir la misma tabla, que
se puede especificar usando la lista desplegable Configuration Filter. Puede
Configuration Filter introducir un filtro nuevo o elegir uno que ya existe en la tabla. El nombre que
seleccione o escriba para esta propiedad se utiliza como un valor en la columna
Configuration Filter en la tabla mencionada.

Agregar propiedades a su configuración


No importa qué tipo de configuración SSIS elija, la siguiente página del asistente, Select
Properties to Export permite seleccionar el paquete SSIS y las propiedades de los
objetos, que deben ser usados en la configuración. Después de definir las propiedades
del tipo de configuración en el Package Configuration Wizard, haga clic en Next.
En este punto, SSIS le solicita que verifique si las entradas de configuración ya existen,
para el tipo de configuración que ha seleccionado. Si lo hace, SSIS le pide o que reutilice

95 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
las entradas de configuración o las sobrescriba. La Figura 3-6, muestra el cuadro de
diálogo que permite especificar qué hacer con las entradas existentes.

Figura 3-6
Si ve este cuadro de diálogo, es probable que quiera compartir las configuraciones
existentes entre los paquetes. Si lo hace, haga clic en el botón Reuse Existing. Si desea
borrar las entradas existentes y crear otras nuevas, haga clic en Overwrite.
Si las entradas de configuración no existen en esta configuración o ha hecho clic en
Overwrite, aparecerá la página Select Properties To Export, como se muestra en la
Figura 3-7.

Figura 3-7
La pagina Select Properties To Export usa una estructura de vista de árbol de las
propiedades de su paquete y le permite seleccionar las propiedades para la configuración
SSIS que ha seleccionado. Las propiedades se agrupan en las siguientes carpetas:
 Variables. Contiene una lista de todas las variables de paquete y sus propiedades
correspondientes, para seleccionar de las entradas de configuración.
 Connection Managers. Muestra una lista de todas las conexiones de paquete y le
permite elegir las propiedades específicas de las conexiones.
 Log Providers. Permite establecer dinámicamente la configuración del registro, que
es la conexión que el proveedor de registro utilizará.
 Properties. Muestra todas las propiedades a nivel de paquete (en vez de a nivel de
tarea o a nivel de contenedor) que se pueden utilizar para configurar el paquete.
 Executables. Contiene la estructura de árbol de las tareas y contenedores.
Navegando a través de este árbol, puede configurar las propiedades específicas de
las tareas y contenedores.
Si está utilizando el XML Configuration File, Registry Entry, o tipo de configuración SQL
Server, puede establecer varias propiedades de configuración de una sola vez,
seleccionando múltiples casillas de verificación de propiedades. Para otros tipos de
configuración, sólo tiene que seleccionar la propiedad que usará para la configuración.
La página final del asistente le permite nombrar la configuración de modo que pueda
identificarla en la lista de configuraciones.

96 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Compartir, Ordenar y Editar sus configuraciones
Si tiene varias configuraciones en la lista, puede definir el orden en el que las
configuraciones se aplican en un paquete. Las configuraciones son llamadas en el orden
en que aparecen, en el Package Configurations Organizer. Esta es una consideración
importante si tiene múltiples configuraciones de actualización de la misma propiedad o si
tiene configuraciones que tienen una dependencia, en una configuración anterior. Por
ejemplo, podría tener una configuración que actualiza una cadena de conexión, que es
utilizada como la ubicación de las entradas de configuración en una segunda
configuración. La propiedad última propiedad aplicada y actualizada será el valor que se
utiliza en el paquete.
Un enfoque común es compartir configuraciones entre los paquetes. Si hace esto, puede
que tenga entradas de configuración que se aplican a un paquete y no en otro. Esto no
afecta a la ejecución del paquete, pero recibirá una advertencia para indicar que una
propiedad de configuración no existe en el paquete.
Como nota final, puede modificar todas las entradas de configuración SSIS que ha hecho
simplemente editando el archivo, SQL Server, registro, o valor de variable de entorno.
Puede buscar la propiedad Configured Value y, cambiarla de ser necesario.
Puede utilizar el Package Configurations Organizer para ordenar las configuraciones que
ha creado en su paquete, sólo tiene que utilizar las flechas arriba y abajo de la parte
derecha de la ventana, como muestra la Figura 3-8. Las configuraciones se aplican una a
la vez, en el orden en que aparecen. Esto significa que si tienes dos configuraciones de
actualización de la misma propiedad, el último aplicado (abajo en la lista de
configuración) está en vigor en el paquete.

Figura 3-8
MUNDO REAL
Con frecuencia a través de requerimientos del cliente, se especifica que los nombres de
usuario y las contraseñas de conexión no puedan ser almacenados como una cadena de
texto plano en un archivo XML. Esta es una política razonable de seguridad. Si la
contraseña es almacenada en texto plano, cualquiera que tenga acceso al archivo puede
acceder al nombre de usuario y contraseña. Almacenar estos valores en una tabla de
SQL Server puede ser más seguro, ya que a los usuarios se les puede más fácilmente
denegar los permisos para la tabla. Sin embargo, si planea implementar paquetes entre
los servidores, la conexión a la tabla de configuración también necesita estar en una
configuración. Así que si almacena todo en una tabla de configuración en SQL Server,
puede crear una referencia circular: ¡no debe poner la configuración de cadena de
conexión, en la base de datos de la misma conexión!

97 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Una solución común al problema de referencia circular es el de crear dos
configuraciones. La primera configuración (ubicado en la parte superior de la lista de
configuración) contiene una sola entrada que apunta a la configuración de la conexión de
SQL Server. La cadena de conexión utiliza autenticación de Windows para evitar los
nombres de usuario y contraseñas, y el tipo de conexión podría ser un XML Configuration
File, un Registry Entry, o un tipo de configuración Environment Variable. Asegurese de
que la cadena de conexión se actualice inmediatamente cuando el paquete carga esta
configuración, el cual apunta a una base de datos SQL Server, almacenando la tabla de
configuración SQL Server, necesita ser el primero en la lista de configuracion. El resto de
las configuraciones puede utilizar el tipo de configuración SQL Server, y la conexión
debería ser de fecha superior para su entorno.
En resumen, aquí está cómo configurar la solución de dos configuraciones:
1. Crear una simple configuración XML que tenga una sola entrada, la cadena de
conexión a la base de datos que contiene el archivo.
2. Crear una segunda configuración (debajo de la configuración XML) que es una
configuración de SQL Server, y luego usar esta configuración para todas sus otras
configuraciones.
Las configuraciones son muy beneficiosos cuando se está moviendo paquetes de un
ambiente a otro y cuando es necesario actualizar las conexiones o configuraciones de
varios paquetes a la vez.

Determinar el Tipo de Configuración a Usar


Como puede ver, se tiene un montón de opciones para las configuraciones de paquetes.
La pregunta natural es que configuración debería usar, dependiendo de sus necesidades.
Aquí se presenta alguna guía de cómo trabajar a través de sus opciones:
 Si se tiene varios paquetes que necesitan compartir una configuración, pero los
paquetes se ejecutan en equipos diferentes, debe utilizar el tipo de configuración SQL
Server. Todos los paquetes pueden apuntar a la base de datos de SQL Server, que
puede residir en un servidor diferente. Se necesita crear todos los otros tipos de
configuración localmente en el servidor, por lo que no se pueden compartir las
configuraciones a través de servidores.
 Si está ejecutando paquetes juntos, con un paquete ejecutando un segundo paquete
con la tarea Execute Package, y necesita pasar el valor de una variable del paquete
padre hacia el paquete hijo, debe utilizar la configuración Parent Package Variable.
Por el contrario, si sus requerimientos especifican que no se puede tener alguna
dependencia de paquete a paquete, no debería utilizar la configuración Parent
Package Variable.
 Si está planeando trasladar paquetes de un servidor de desarrollo a un servidor de
prueba y luego a un servidor de producción y cada entorno tiene que utilizar una
ubicación diferente para la configuración (como por ejemplo, la ruta de un archivo de
configuración XML), debe usar la disposición de una configuración indirecta para la
configuración. Se utiliza una variable de entorno del sistema, que apunta al archivo
XML correcto.
 Si tiene más de una entrada de configuración que se quiere poner en una simple
configuración SSIS, es necesario utilizar XML Configuration File o la configuración
SQL Server, porque estos tipos de configuración permiten la inclusión de más de una
propiedad (como una cadena de conexión y un valor de variable) por configuración.
Los otros tipos de configuración (Environment Variable, Registry Entry, Parent
Package Variable) sólo permiten una propiedad por configuración.
Utilizando Expresiones SSIS y Property Expressions
SSIS incluye un lenguaje de expresiónes para ayudar a generar propiedades dinámicas o
para probar lógica booleana. Varios componentes analizados en el Capítulo 1; incluidos

98 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
los contenedores, tareas y transformaciones; usan el lenguaje de expresiones SSIS.
Además de los componentes integrados que utilizan expresiones, SSIS también permite
que las propiedades de los objetos Control Flow, se actualicen dinámicamente a través
de Property Expressions SSIS. El resto de esta lección revisa expresiones y su uso.
El uso más común de una expresión, es en un Data Flow Conditional Split o Derived
Column. La Figura 3-9, muestra el Derived Column Transformation Editor.
Expresiones SSIS, como el que se destaca en la Figura 3-9, se utilizan para generar el
valor de una columna nueva o actualizar el valor de una columna existente. En la parte
superior izquierda en la Figura 3-9, hay una lista de variables de paquete y una lista de
columnas en el Data Flow. Ambos están disponibles para referencia en la expresión. En
la sección superior derecha se muestra una lista completa de las funciones de
expresiones SSIS que se puede utilizar para esta transformación.

Figura 3-9
Tabla 3-3 Lista los lugares donde puede usar expresiones, en un paquete SSIS.
COMPONENTE DESCRIPCION
La transformación Derived Column usa el lenguaje de expresiones SSIS, para
Transformación Derived
generar el valor de una columna nueva o cambiar el valor de una columna
Column
existente.
La transformación Conditional Split usa el lenguaje de expresiones SSIS, para
Transformación Conditional
evaluar el resultado booleano de condiciones que determinan, a que salida
Split
debería una fila ser enviada.
El contenedor For Loop usa una expresión, para definir la condición inicial del
Contenedor For Loop bucle y el cambio para cada ciclo y luego determinar si el ciclo se ha completado.
Utiliza una combinación de pruebas booleanas y operaciones de conjunto.
Las variables se pueden establecer dinámicamente a través de una expresión
SSIS. Esto se hace cuando una variable se selecciona en la ventana Variables y
Variable Expression la ventana Propiedades está abierta. Para usar esta capacidad, es necesario
establecer la propiedad EvaluateAsExpression a True y luego ingresar una
expresión en la propiedad Expression.
Las Property Expressions son una forma en que SSIS puede actualizar
dinámicamente el valor de las propiedades, mientras que un paquete se está
ejecutando. En lugar de utilizar un valor de código forzado para una propiedad,
Property Expressions puede usar una expresión para generar el valor. Estas propiedades incluyen las
propiedades del paquete, en el nivel Control Flow y contenedores y propiedades
de tarea y se accede a través de los editores y la ventana Properties.
Discutiremos las Property Expressions al final de esta sección.

99 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2


Narcizo D.Hinojosa Chirinos.
Sintaxis de Expresión
Como se muestra en el panel superior derecho de la Figura 3-9, el lenguaje de
expresiones incluye funciones matemáticas, funciones de cadena, funciones de
fecha/hora, funciones NULL, tipo Cast y las funciones de operadores estándar. Para
entender mejor cómo las expresiones trabajan, aquí están algunas de las funciones más
comunes y operadores:
 Funciones Matemáticas. Usadas para realizar operaciones matemáticas complejas,
incluyendo ABS, Log y Power.
 Funciones de Cadenas. Toma el valor de una cadena y luego aplica la lógica para
modificar el valor o encontrar un lugar específico en el valor; por ejemplo, Len, LTrim
y Replace.
 Funciones de Fecha/Hora. Aplicación de funciones de manipulación de fechas,
tales como DateAdd, donde un valor de fecha es cambiada mediante la adición o
sustracción de un atributo de fecha (por ejemplo, días, semanas o meses), o las
funciones de evaluación de fecha que realizan la verificación de fechas, como
DateDiff, que compara dos fechas y devuelve la diferencia, o DatePart, que saca una
parte específica de una fecha (por ejemplo, día, semana o mes).
 Funciones NULL. Evalúa si una variable o una columna es nula (IsNull) y devuelve
True o False, o usa un valor NULL de un tipo de datos específico, así como DT_I4
(entero de 4 bytes).
 Tipo Cast. Convierte un valor de un tipo de datos a otro tipo de datos diferente. Por
ejemplo, (DT_I4)"10,0" convierte 10.0 a 10 como un entero.
 Operadores Los operadores pueden ser cualquiera, desde los operadores
matemáticos estándar, tales como +, -, y % a operadores que pueden realizar
evaluaciones Booleanas. Éstos son algunos de los operadores booleanos:
 Equal: ==
 Not equal: !=
 Logical AND: &&
 Logical OR: ||
 Conditional: <boolean> ? <true part> : <false part>
El operador condicional es un aspecto particularmente útil del lenguaje de expresiónes
SSIS. Se comporta como una sentencia if condicional o sentencia cast. En primer lugar
comprueba una expresión booleana, y si el valor booleano retorna True, la primera parte
se devuelve, si el valor booleano retorna False, la segunda parte se devuelve. En el
siguiente ejemplo, si la columna Color es null, la expresión devuelve un valor "Unknown"
(como una cadena ANSI de longitud 20), de lo contrario, el valor ajustado de Color se
devuelve:
ISNULL( [Color] ) ? (DT_STR, 20, 1252)"Unknown" : TRIM( [Color] )

Property Expressions
Un uso práctico de las expresiones SSIS es property expressions, que le permiten
actualizar las propiedades del Control Flow durante la ejecución del paquete. Se puede
aplicar una property expression de dos maneras. En primer lugar, se puede establecer la
propiedad como una expresión a través de la ventana Properties. La Figura 3-10,
muestra la propiedad Expressions en la ventana Properties de un paquete. Se abre el
Property Expressions Editor, haciendo clic en el botón de puntos suspensivos de la
propiedad Expressions, y en este cuadro de diálogo, puede seleccionar una propiedad de
la lista desplegable y a continuación, escribir una expresión.

100 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-10
Observe el botón de puntos suspensivos en el campo Expression del Property
Expressions Editor. Al hacer clic en este botón se abre un editor de expresiones, que es
similar a la Derived Column Transformation Editor que vimos en la Figura 3-9.
La segunda manera de establecer expresiones de propiedad es utilizar el editor de tarea
o contenedor, que tiene una o más formas de establecer las propiedades a través de una
expresión. La Figura 3-11, muestra el Foreach Loop Editor. La ficha Collection tiene un
método para establecer las propiedades con una expresión. El cuadro de dialogo
Property Expressions Editor, también se muestra en la Figura 3-11, se abre haciendo clic
en el botón de puntos suspensivos en la propiedad Expressions que ve directamente
sobre el cuadro de diálogo. Observe también la ficha de propiedades Expressions de la
izquierda, esta ficha le permite configurar las propiedades del contenedor Foreach Loop
en general (no específica de la colección).

Figura 3-11
TEMAS CLAVE
No sólo se puede configurar paquetes, tareas y propiedades de contenedores a través de
expresiones, también se puede actualizar el valor de las propiedades de conexión
mientras se ejecuta un paquete. Esta capacidad es especialmente útil cuando se tiene un
bucle Foreach que se itera sobre los archivos. Puede utilizar la variable donde la ruta
completa se captura y actualizar la conexión para el archivo con una expresión de
propiedad. En el Ejercicio 3 de la sección práctica de esta lección, se actualizará el valor
de la conexión de Microsoft Office Excel mientras se ejecuta el paquete.
PRACTICA Utilizando Configuraciones y Expresiones para Hacer las
Propiedades del Paquete Dinámicas

101 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
En estos ejercicios, se creará un XML Configuration File, que será compartido entre dos
paquetes, y luego creara un tipo de configuración SQL Server. A continuación, utilizará la
Property Expressions para actualizar el valor de una cadena de conexión, en una
conexión de paquetes.
EJERCICIO 1: Crear una configuración XML
En este ejercicio, se va a utilizar configuraciones SSIS, para crear un SSIS XML
Configurations File, que contiene la propiedad cadena de conexión del Connection
Manager AdventureWorks2008R2.
1. En BIDS, abra el proyecto SSIS llamado PLibroSSIS que ha modificado en los
ejercicios de práctica del Capítulo 2.
2. Abra el paquete DimCustomer.dtsx en BIDS haciendo doble clic en el paquete, en el
Solution Explorer.
3. Elija Package Configurations en el menú SSIS.
a. Seleccione la casilla de verificación Enable Package Configurations en el cuadro
de dialogo Package Configurations Organizer.
b. Haga clic en Add para crear una nueva configuración.
c. Haga clic en Next en la página Welcome to the Package Configuration Wizard.
d. En la lista desplegable Configuration Type, seleccione XML Configuration File.
e. Haga clic en el botón Browse junto al cuadro Configuration File Name, busque la
carpeta de los archivos instalados, y luego escriba SSIS_Connections
.dtsConfig. Haga clic en Guardar para guardar el nombre del archivo y la ruta.
f. Haga clic en Next en el Package Configuration Wizard para ir a la página Select
Properties to Export.
g. Debajo de objetos, expanda la carpeta Connection Managers, expanda
AventureWorks2008R2, a continuación, expanda la carpeta Properties de la
conexión AdventureWorks2008R2.
h. Seleccione la casilla de verificación junto a la propiedad ConnectionString, a
continuación, haga clic en Next.
i. Nombre la configuración como Configuracion XML Primaria, a continuación,
haga clic en Finish, lo que completa el proceso de generar el archivo de
configuración XML y la actualización de las configuraciones relacionadas.
4. En el cuadro de diálogo Package Configurations Organizer, haga clic en Close.
5. Guardar y cerrar el paquete DimCustomer.dtsx.
6. Abra el paquete DimPromotion.dtsx haciendo doble clic en el paquete en el Solution
Explorer.
7. Repita los pasos del 3a al 3e en el paquete DimPromotion.dtsx. Después del paso 3e,
haga clic en Next en la página Configuration Type, y se le solicitara que sobrescriba el
archivo existente o que reutilice las configuraciones que contiene. Haga clic en el
botón Reuse Existing.
8. Nombre la configuración XML como Configuracion XML Primaria, a continuación,
haga clic en Finish.
9. Guardar y Cerrar el paquete DimPromotion.dtsx.
EJERCICIO 2: Creación de una Configuración SQL Server
En este ejercicio, creará una segunda entrada SSIS Configuration utilizando el tipo SQL
Server Configuration, y luego se le agregara varios paquetes, conexiones y propiedades
de tareas a la configuración.
1. Si es necesario, inicie BIDS, abra el proyecto PLibroSSIS y, a continuación, edite el
paquete DimCustomer.dtsx haciendo doble clic en el paquete en el Solution Explorer.
Si se le solicita sincronizar las cadenas de conexión, haga clic en OK.

102 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. Elija Package Configurations en el menú SSIS para abrir el cuadro de dialogo
Package Configurations Organizer.
3. Haga clic en Add en el Package Configurations Organizer. En los siguientes pasos,
agregará una entrada SQL Server Configuration que va a contener varias
propiedades de paquete que podría necesitar cambiar sin modificar el paquete.
a. Haga clic en Next en la página Welcome, y luego en la página Select
Configuration Type, cambie Configuration Type en la lista desplegable a SQL
Server.
b. Cambiar Connection en la lista desplegable a AdventureWorks2008R2 (o confirme
que AdventureWorks2008R2 está seleccionada).
c. Haga clic en el botón New junto a la lista desplegable Configuration Table, lo que
genera un script SQL, para crear una tabla denominada [dbo].[SSIS
Configurations]. Haga clic en OK en el cuadro de diálogo Create Table para
ejecutar la sentencia CREATE TABLE y volver al Package Configurations Wizard.
d. Escriba PackageProperties en el cuadro Configuration Filter. La página Select
Configuration Type debe ser similar a la que se muestra en la Figura 3-12.

Figura 3-12
e. Haga clic en Next y, a continuación, por debajo de los objetos, desplazarse por la
lista para configurar las siguientes tres propiedades mediante la selección de sus
casillas correspondientes:
Connection Managers\AdventureWorksDW2008R2\Properties\ConnectionString
Properties\TransactionOption
Executables\Data Flow Task\Properties\Disable
f. Haga clic en Next, nombre Configuraciones Package Property a la
configuración, y haga clic en Finish para completar la configuración.
g. Haga clic en Close en el cuadro de dialogo Package Configurations Organizer.
4. Cambiar a SSMS, a continuación, conectarse al motor de base de datos. En la
ventana Object Explorer, busque la base de datos AdventureWorks2008R2 a
continuación, expanda la carpeta Tables.
5. Haga clic derecho en la tabla [dbo].[SSIS Configuration], a continuación, haga clic en
Edit Top 200 Rows.
6. Localice el registro, donde el valor de PackagePath es \Package\Data Flow
Task.Properties[Disable], y luego cambiar la columna ConfiguredValue de False
a True escribiendo sobre el valor en la columna. Esto obligará a la tarea Data Flow a
que no se ejecute.

103 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
7. Cierre la tabla, a continuación, retorne a BIDS.
8. Ejecute el paquete DimCustomer.dtsx, y observe que la tarea Data Flow no se ejecuta
a pesar de que la tarea no se ha desactivado en el Diseñador SSIS. Esto es así
porque el valor de configuración se actualiza cuando el paquete empieza.
9. Volver al SSMS, y repita el paso 6, cambiando la columna ConfiguredValue de la
propiedad Disable de True a False.
EJERCICIO 3: Usar Property Expressions para Actualizar una Conexión
En este ejercicio, tendrá que trabajar con el paquete Import_Excel_Files.dtsx,
reemplazando la tarea Script que actualiza la conexión Microsoft Office Excel con una
Property Expression.
NOTA: AGREGAR EL PAQUETE IMPORT_EXCEL_FILES.DTSX A UN
PROYECTO EXISTENTE
Puede agregar el paquete Import_Excel_Files.dtsx a su proyecto SSIS existente, haga
click derecho al SSIS Packages en el Solution Explorer y clic en Add Existing Package.
Select File System de la lista desplegable Package location, a continuación, busque el
archivo en el campo Package Path.
1. Abra el paquete Import_Excel_Files.dtsx haciendo doble clic en el paquete en el
Explorador de soluciones.
2. Eliminar la tarea Script en el interior del contenedor Foreach Loop, haga clic derecho
en la tarea y clic en Delete. Confirmar la eliminación cuando se solicite.
3. En la ventana Connection Managers en la parte inferior del Diseñador SSIS,
seleccione Excel Connection Manager.
4. Abra la ventana Properties, y haga clic en la chincheta para bloquear la ventana, en la
posición abierta.
5. Mientras que el Excel Connection Manager está todavía seleccionado, haga clic en la
propiedad Expressions en la ventana Properties.
6. Haga clic en el botón de puntos suspensivos a la derecha del cuadro Expressions
para abrir el Property Expressions Editor.
a. En la lista desplegable que aparece, haga clic en el valor Property, seleccione
ExcelFilePath.
b. En la misma línea, haga clic en el botón de puntos suspensivos a la derecha de la
columna Expression para abrir la ventana Expression Builder.
c. En la sección superior izquierda, expanda la carpeta Variables, busque la variable
User::FileName, y arrastrela al cuadro de texto Expression, que luego se debe
leer @[User::FileName].
d. Haga clic en OK para guardar los cambios y haga clic en OK de nuevo en
Property Expressions Editor para volver al paquete.
7. Vaya a la ficha Data Flow, a continuación, seleccione el origen Excel Source.
8. En la ventana Properties, cambie el valor de ValidateExternalMetadata a False. Esto
asegura que el paquete no se interrumpa durante la validación si la variable no tiene
un valor válido antes de que el contenedor Foreach Loop se ejecute.
9. Ejecutar el paquete en BIDS para probar la ejecución. Las conexiones asumen que el
usuario a iniciado la sesión como administrador y que la ruta de los archivos es:
C:\SSIS\LibroSSIS\PLibroSSIS. Puede que necesite cambiar la conexión Archive y
la carpeta Foreach Loop para activar el paquete y se pueda ejecutar con éxito.
Comprobación Rápida
1. ¿Cuáles son algunas de las razones para usar configuraciones de paquete en la
arquitectura SSIS?

104 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. ¿Cuando hace una lectura de paquete y usa las entradas de configuración?
3. ¿Cuando son evaluadas las propiedades de expresiones, si un paquete se está
ejecutando?
Respuestas de Comprobación Rápida
1. Las configuraciones de paquete SSIS son valiosas, si se tiene un entorno SSIS en el
cúal se necesite implementar paquetes de un servidor a otro y las propiedades de
estos paquetes, tal como sus conexiones, necesitan ser actualizadas.
2. Las entradas de configuración, se leen al comienzo de la ejecución del paquete. En
BIDS, las configuraciones sólo se aplican cuando se ejecuta un paquete en el modo
de depuración; ellas no son aplicadas cuando se está diseñando el paquete.
3. A diferencia de las entradas de configuración que se leen al comienzo de la ejecución
del paquete, las Property Expressions se actualizan cuando la propiedad es accedida
por el paquete, durante la ejecución del paquete. Una Property Expression puede
cambiar el valor de una propiedad, en medio de la ejecución del paquete, y el nuevo
valor se lee cuando la propiedad es requerida por el paquete.

Lección 2: Implementando Paquetes SSIS


Una vez que haya establecido las configuraciones y expresiones de un paquete, está listo
para mover el paquete a su nuevo entorno. SSIS proporciona las herramientas para
manejar la distribución de paquetes, y cuando se hace uso de estas herramientas
integradas de implementacion, el proceso de distribución requiere solo dos pasos:
1. Creación de un instalador de paquetes usando de Package Deployment Utility.
2. Implementando el instalador a su nuevo destino de implementación.
Sin embargo, no es necesario utilizar las herramientas de implementación para mover su
paquete de un entorno a otro. Los paquetes son simplemente archivos XML, y se pueden
copiar de la carpeta del proyecto a la carpeta de destino o importarlos a SQL Server. Esta
lección comienza con una descripción de los métodos de implementación de paquetes
SSIS y, a continuación, se describe la distribución de paquetes con las herramientas de
implementación integradas.
Entendiendo la Implementación de Paquetes
Para entender mejor la implementación, primero tenemos que entender el
almacenamiento de paquetes. Cuando crea proyectos SSIS, los paquetes residen en la
carpeta del sistema, en el que se definió el proyecto SSIS; tienen una extensión .dtsx.
Cuando mueve los paquetes del entorno de desarrollo al de prueba o al de producción,
tenemos dos opciones para el almacenamiento de paquetes:
 Implementar SSIS al File System. Independientemente de los proyectos en los que
fueron creados, los paquetes pueden ser colocados en archivos compartidos o en
carpetas de archivos, de los que pueden ser ejecutados.
 Implementar SSIS a SQL Server. Los paquetes pueden ser importados de SQL
Server, desde donde pueden ser ejecutados. Cuando los paquetes son almacenados
en SQL Server, SSMS se conecta a SSIS para manejarlos. El Capítulo 4 cubre los
detalles de ejecución de paquetes y almacenamiento en SQL Server.
TEMAS CLAVE
Al implementar un paquete a SQL Server, el paquete se almacena en la base de datos
MSDB, en una tabla llamada dbo.sysssispackages. Por lo tanto, si se desea una copia de
seguridad de los paquetes que han sido implementados a SQL Server, puede hacer una
copia de seguridad de la base de datos MSDB.
Para la implementación de paquetes SSIS, el proceso de mover un archivo de un entorno
a otro, involucra la colocación de los archivos del paquete SSIS en carpetas o la

105 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
importación de los archivos del paquete SSIS a SQL Server. El despliegue puede ser
manual o puede ser impulsado a través de la utilidad de implementación.
 Implementación Manual del Paquete. Puede mover los paquetes SSIS a una
carpeta de destino, al copiarlos de forma manual, mediante el uso de una herramienta
source-control, que maneja el despliegue del archivo, o mediante la creación de un
script o una aplicación que se encargue de la implementación. Si almacena el
paquete en SQL Server, puede utilizar en la línea de comandos, la utilidad DTUtil, que
viene con SSIS, para implementar paquetes a SQL Server o manualmente importarlos
a través de SSMS. La utilización de DTUtil se discute en la sección titulada "Utilizando
la Utilidad de Administración SSIS, de Linea de Comandos DTUtil" más adelante en
este capítulo. Si decide importar sus paquetes de forma manual, conectese al servicio
SSIS a través de SSMS, abrir la carpeta Stored Packages, clic derecho en la carpeta
MSDB, a continuación, clic en Import Package para abrir el cuadro de diálogo Import
Package, que se muestra en la Figura 3-13. El Capítulo 4 cubre el servicio SSIS en
más detalle.

Figura 3-13
 Utilidad de implementación. La herramienta automatizada integrada SSIS, la
Package Deployment Utility, también puede implementar paquetes ya sea a un
sistema de archivos o a SQL Server. La ventaja de usar la utilidad de implementación
SSIS, es que se puede implementar un proyecto completo, al mismo tiempo a un
sistema de archivos o a un SQL Server. La Package Deployment Utility primero
genera un conjunto de archivos, que están empaquetados y listos para ser
desplegados y, a continuación, ejecuta el instalador de paquetes para realizar la
implementación. El resto de esta lección cubre Package Deployment Utility y el
Package Installation Wizard.
Creación de un Kit de Instalación usando el Package Deployment Utility
La Package Deployment Utility ayuda a crear lo que se llama un deployment set, que
contiene todos los archivos que necesita para implementar paquetes en un proyecto.
Trabaja directamente en la configuración de un proyecto BIDS para generar el conjunto
de despliegue. Cada proyecto SSIS tiene una propiedad que habilita la utilidad de
implementación. Cuando esta propiedad está habilitada, cada vez que se construye el
proyecto (o el depurador se ejecuta), los siguientes elementos en el proyecto se copian
en una ubicación de carpeta individual:
 Paquetes
 Archivos Misceláneos
 Project Deployment Manifest (el kit de instalación del archivo de configuración,
discutido más adelante en esta sección)
Para activar la utilidad de implementación para un proyecto SSIS, siga estos pasos:

106 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
1. Clic derecho en el proyecto SSIS que figura en el Solution Explorer de BIDS, y luego
clic en Properties. La Figura 3-14, muestra la pagina de la propiedad Deployment
Utility en el cuadro de dialogo SSIS Project Property Pages.

Figura 3-14
2. Cambie la propiedad CreateDeploymentUtility de False a True.
3. Establecer la ubicación en la que los archivos de implementación deben ser
almacenados, cuando el proyecto se construye por la modificación de la propiedad
DeploymentOutputPath. Esta propiedad puede ser una ruta relativa, a partir de la
carpeta del proyecto SSIS, o puede entrar una ruta compartida. La ubicación
predeterminada es la carpeta ..\bin\Deployment\ en la carpeta del proyecto.
4. En el momento de la implementación, tiene la opción de permitir que las
configuraciones del paquete sean modificadas. Por defecto, la propiedad
AllowConfigurationChanges esta establecida a True, pero esto se puede cambiar a
False si fuese necesario limitar los cambios de configuración, para el kit de
implementación, cuando se está implementando.
5. Clic en Aceptar.
El siguiente paso es ejecutar un proceso construido en el proyecto SSIS para generar el
conjunto de despliegue. Para ello, haga clic derecho en el proyecto SSIS en el Solution
Explorer y haga clic en Build.
IMPORTANTE: APAGAR IMPLEMENTACIÓN CUANDO TERMINE
Si la propiedad CreateDeploymentUtility se establece a True, en cualquier momento,
cualquier paquete en el proyecto es depurado (por ejemplo, si se ejecuta en BIDS), un
nuevo conjunto de despliegue se creará. Esto sobrescribirá conjuntos de despliegue
existentes, así que asegúrese de establecer el CreateDeploymentUtility a False después
de haber creado el conjunto de implementación.
En este punto, es una buena idea abrir la carpeta de la ruta Deployment para verificar
que los archivos se han generado con éxito. En esta carpeta, debe ver su paquete de
archivos .dtsx, archivos miscelaneos definidos en su proyecto, y un paquete de
implementacion de archivos de configuración con extensión de archivo
.SSISDeploymentManifest. Este archivo contiene la lista de paquetes y se utiliza cuando
se implementa el set de instalación. La Figura 3-15, muestra los archivos que forman
parte del conjunto de implementación de los ejemplos del capítulo.

107 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-15
Implementación de paquetes
Como se señaló anteriormente, ya que los paquetes SSIS se almacenan en la carpeta del
proyecto, se puede mover manualmente los archivos .dtsx actuales, a un nuevo entorno
de servidor, a un recurso compartido o manualmente importarlos a SQL Server a través
de SSMS o por la utilidad de línea de comandos DTUtil (discutida en la siguiente sección,
"Utilizando la utilidad SSIS de línea de comandos DTUtil"). También puede utilizar el
proceso de implementación automatizado, el cual puede realizar una implementación por
lotes de todos los paquetes SSIS en su proyecto, ya sea a una carpeta de destino o a
SQL Server. El uso de las caracteristicas de despliegue, puede hacer la gestión de
configuración y despliegue multipaquete, más fácil.
Después de que el Package Deployment Utility crea el kit de instalación, como se mostró
anteriormente en la Figura 3-15; su próximo objetivo es tomar el conjunto de archivos e
implementarlos en un destino, mediante el Package Installation Wizard. Para comenzar el
despliegue del kit de instalación, tome las siguientes acciones:
1. El primer paso opcional es mover el kit de instalación al equipo destino. Si su destino
es un recurso compartido de red o un SQL Server, del que tiene acceso de seguridad
al servidor de desarrollo, los archivos de distribución pueden permanecer en su lugar.
2. Para poner en marcha el kit de instalación, localice la carpeta que contiene los
archivos de implementación, y buscar el archivo llamado [Nombre del Proyecto]
.SSISDeploymentManifest. Para abrir el Package Installation Wizard, haga doble clic
en el archivo de manifiesto de implementación. Cuando se ejecuta el asistente, tendrá
la opción de implementar el paquete a una base de datos SQL Server o a un sistema
de archivos. Si selecciona un despliegue de bases de datos, necesita dar el nombre
del servidor en el que el paquete será implementado y las credenciales; también
necesita dar una ubicación donde colocar sus archivos.
3. En la página Deploy SSIS Packages, seleccione el destino de implementación, como
muestra la Figura 3-16. Elija la File System Deployment o la SQL Server Deployment,
y a continuación, especifique si los paquetes seran validados después del despliegue.
Haga clic en Next.

108 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-16
4. En base a lo que haya seleccionado en la primera página, será capaz de definir la
ubicación de almacenamiento específica, usando los detalles de conexión de SQL
Server o a un archivo y ruta de carpeta. La Figura 3-17 muestra la página Specify
Target SQL Server. Es necesario establecer el Package Path, que es la subcarpeta
SSIS virtual en el almacenamiento de base de datos MSDB. Haga clic en Next.

Figura 3-17
5. La página Select Installation Folder le permite designar un lugar para todos los
archivos dependientes. Haga clic en Next.
TEMAS CLAVE
Si vas a implementar en SQL Server o en el sistema de archivos, el Package Installation
Wizard copia los archivos dependientes a la carpeta que especifique. Esto incluye los
archivos de configuración XML, que es usado por otro paquete en el proyecto (pero sólo
donde la ruta de configuración XML, es de código forzado en el paquete y no usa una
variable de entorno). El Package Installation Wizard actualizará las entradas de
configuración XML en el paquete y los cambiara para apuntar a la nueva ruta XML
Configuration File.
6. Al hacer clic en Next en la página Confirm Installation se iniciará el despliegue.
7. Si su paquete incluye los archivos de configuración, en este punto, la página
Configure Packages le permite cambiar cualquiera de las propiedades que existen,
como muestra la Figura 3-18. Sólo los archivos de configuración XML son

109 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
actualizables durante el despliegue, no se puede actualizar otro tipo de
configuraciones. Haga clic en Next.

Figura 3-18
8. La página final del asistente muestra los resultados de la implementación. Haga clic
en Finish para completar la implementación.
El resultado de la implementación es la copia de los paquetes al destino especificado, así
como la actualización de las ubicaciones de los archivos de configuración al lugar en
donde los nuevos archivos seran ubicados. Figura 3-19, muestra el Explorador de
objetos en SSMS después de los paquetes han sido enviados a SQL Server.

Figura 3-19
Utilizando la Utilidad SSIS de Línea de Comandos DTUtil
SSIS viene con la utilidad de línea de comandos DTUtil, que permite realizar tareas de
gestión de paquetes, como el despliegue, a través de la línea de comandos o procesos
por lotes de archivos. DTUtil puede trabajar con paquetes que se almacenan en el
sistema de archivos, en SQL Server, o en una carpeta designada en el equipo SSIS,
llamada SSIS Package Store. Esta sección cubre el uso de DTUtil para la gestión de
paquetes.
Operaciones DTUtil y Parámetros
DTUtil utiliza parámetros de línea de comandos estándar para realizar sus operaciones.
Por ejemplo, la ubicación de almacenamiento de paquetes, referencia el uso de
parámetros /SQL, /FILE, y /DTS de orígenes y destinos.
Operativamente, DTUtil puede realizar varias operaciones de paquete centrados en
gestión. La Tabla 3-4 enumera algunos de los modificadores de línea de comandos que

110 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
realizan operaciones en los paquetes, puede utilizar estos modificadores, con otros
parámetros de comando, para localizar el origen y el destino de paquetes.
Tabla 3-4 Modificadores de Linea de Comandos de DTUtil
PARAMETRO LINEA DE COMANDO DESCRIPCION
/COPY Copia paquetes de un origen a un destino
/MOVE Mueve paquetes de un origen a un destino
/DELETE Elimina paquetes de un destino
/EXITS Comprueba la existencia de un paquete
/ENCRIPT Encripta un paquete existente
/DECRIPT Desencripta un paquete usando una contraseña de paquete
/SIGN Firma digitalmente un paquete
Crea y gestiona carpetas para el paquete SSIS Store y en la
/FCREATE
base de datos MSDB de SQL Server
Para ilustrar la utilidad DTUtil para la gestión y operaciones SSIS, vamos a ver algunos
ejemplos comunes. En el primer ejemplo, mostrado aquí, la operación DTUtil copia un
archivo llamado MyPackage.dtsx de una carpeta local a la misma carpeta local con un
nuevo nombre de archivo MyCopiedPackage.dtsx. (Note que los paréntesis son
necesarios si existen espacios en la ruta).
dtutil.exe /FILE c:\MyPackage.dtsx /COPY FILE; c:\MyCopiedPackage.dtsx
El siguiente ejemplo elimina MyPackage.dtsx de la base de datos local MSDB de SQL
Server con una determinada sesión y contraseña de SQL. Si /SOURCEUSER y
/SOURCEPASSWORD no se proporcionan, la declaración usará la autenticación de
Windows, como muestra la segunda línea:
dtutil.exe /SQL MyPackage /SOURCEUSER SSIS_User /SOURCEPASSWORD
[password] /DELETE
dtutil.exe /SQL MyPackage /DELETE
El siguiente ejemplo comprueba la existencia de MyPackage en el SQL Server local.
(Note que la extensión de archivo .dtsx no es necesaria para referenciar el paquete en
SQL Server). Si el paquete no existe, el resultado de línea de comandos leerá El paquete
especificado no existe.
dtutil.exe /SQL MyPackage /EXISTS
El siguiente ejemplo despliega (copia) un paquete del File System a SQL Server:
dtutil.exe /FILE c:\MyCopiedPackage.dtsx /COPY SQL;\MyCopiedPackage
NOTA: DETALLES DE EJECUCION DTUTIL
Para una revisión detallada de los parámetros de la línea de comandos DTUtil, consulte
Libros en Pantalla SQL Server 2008 o ejecutar la línea de comandos comando
DTUtil/Help en un servidor que tiene instalado SSIS.
Métodos de Ejecución DTUtil
Puede ejecutar DTUtil a través de una línea de comandos programada y utilidades,
incluidos el SQL Server Agent o Windows Scheduler. Además, puede crear archivos por
lotes, que se pueden utilizar para automatizar procesos comunes o recurrentes.
Cuando se ejecuta DTUtil a través de una utilidad automatizada de línea de comandos,
puede utilizar la Tabla 3-5 para interpretar los códigos de retorno.
Tabla 3-5 Codigos de Retorno para DTUtil
CODIGO DE RETORNO DESCRIPCION
0 Éxito
1 Falla
4 Paquete no encontrado
5 Paquete no cargado

111 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
6 Mala sintaxis

PRACTICA: Implementando Paquetes SSIS


En esta práctica, se generará un kit de instalación SSIS, para implementación. Luego se
desplegará el kit de instalación, establecido a una instancia de SQL Server.
EJERCICIO 1: Crear un Kit Instalador
En este ejercicio, va a configurar las propiedades del proyecto SSIS, para crear el kit de
instalación. A continuación se construirá el proyecto, que en realidad genera los archivos
que son necesarios para su implementación.
1. Si es necesario, inicie BIDS y abra el proyecto PLibroSSIS.
2. En el Solution Explorer, clic derecho al proyecto, a luego, clic en Properties.
a. En la lista Configuration Properties en la parte izquierda, clic en la ficha de
propiedades Deployment Utility.
b. Cambiar el valor de CreateDeploymentUtility a True.
NOTA: DEPLOYMENTOUTPUTPATH
Note que la propiedad DeploymentOutputPath, define donde el proyecto implementará los
paquetes y el kit de instalación.
c. Clic en Aceptar para guardar sus cambios.
3. Elija Build [Nombre del Proyecto], donde [Nombre del Proyecto] es el nombre de su
proyecto, en el menú Build. Alternativamente, puede iniciar el proceso build, haciendo
clic derecho al proyecto en Solution Explorer y luego clic en Build.
Esto copiara todos los paquetes, los archivos de configuración XML, y archivos
miscelaneos almacenados en el proyecto, a la ruta especificada en la propiedad
DeploymentOutputPath del proyecto. Un archivo de configuración del kit de
instalación, también se creará en esta ubicacion. Por defecto, este se encuentra en la
carpeta ..\bin\Deployment\ en la ubicación del proyecto.
EJERCICIO 2: Despliegue sus Paquetes Utilizando un Kit de Instalacion
En este ejercicio, se iniciará el SSIS Deployment Wizard, usando el archivo SSIS
Deployment Manifest, y luego se va a configurar el despliegue para mover los paquetes a
la base de datos MSDB en SQL Server.
1. Una mirada a la DeploymentOutputPath tal como se ha definido en la ficha de
propiedades del proyecto en el Ejercicio 1. La ruta por defecto será [ruta del
proyecto]\bin\Deployment\.
NOTA: LOCALIZANDO SU RUTA DE PROYECTO
Si no está seguro cual es la ruta del proyecto, seleccione el proyecto en el Solution
Explorer en BIDS, y luego abra la ventana Properties. La propiedad FullPath le mostrará
la ubicación correcta.
2. En la carpeta Deployment, se encuentra un kit de instalación con el nombre {nombre
del proyecto}.SSISDeploymentManifest. Haga doble clic en este archivo, para abrir el
Package Installation Wizard.
a. Haga clic en Next en la página de bienvenida.
b. En la página Deploy SSIS Package, seleccione SQL Server deployment, a
continuación, haga clic en Next.
c. En la página Specify Target SQL Server, escriba (local) como Server Name, a
continuación, seleccione Use Window Authentication.
d. Haga clic en el botón de puntos suspensivos cerca al cuadro Package Path. En la
ventana SSIS Package, confirme que la carpeta del nivel superior SSIS Packages
este seleccionada, a continuación, haga clic en OK.

112 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
e. Haga clic en Next para mostrar la página Select Installation Folder. Aquí es donde
los archivos relacionados se colocarán en el sistema de archivos, como archivos
de configuración.
f. Haga clic en Next para confirmar la instalación.
g. Debido a que un archivo de configuración fue creado en los ejercicios de la
Lección 1, verá la pantalla Configure Packages. Haga clic en Next para aceptar
los valores ya definidos en los archivos de configuración.
h. Haga clic en Finish para concluir la implementación.
3. Comprobar que los paquetes fueron desplegados exitosamente realizando los
siguientes pasos:
a. Abrir SSMS.
b. En el cuadro de dialogo Connect to Server, seleccione Integration Services de la
lista desplegable Server Type y Localhost de la lista desplegable Server Name.
c. En el Explorador de objetos, expanda Stored Packages-MSDB. Verifique que
todos los paquetes del proyecto existen.
Comprobación Rápida
1. ¿Qué elementos se crean cuando la propiedad CreateDeploymentUtility para el
proyecto SSIS se establece a True y el proyecto se construye? ¿Dónde puede
encontrar estos elementos?
2. ¿Cuáles son los dos tipos de destinos a los que un kit de instalación puede
implementar paquetes SSIS?
3. ¿Se puede usar DTUtil para eliminar un paquete que se implementa en SQL Server?
Respuesta de Comprobación Rápida
1. Una copia de todos los paquetes, archivos de configuración XML, archivos
miscelaneos del proyecto, y el archivo de configuración del kit de instalación son
creados con la utilidad de implementación. Estos archivos se copian en la ubicación
especificada en la propiedad DeploymentOutputPath del proyecto. El valor por defecto
es [ruta del proyecto]\bin\Deployment, donde [ruta del proyecto], es la ubicación del
proyecto que está trabajando.
2. Los paquetes SSIS se pueden implementar en un sistema de archivos o una base de
datos SQL Server y el kit de instalación le pedirá que elija una de estas.
3. Sí, puede utilizar DTUtil para eliminar paquetes en el sistema de archivos y en SQL
Server mediante el uso del modificador de línea de comandos /DELETE.
Escenario Posible: Desplegando Paquetes SSIS
Se le pide manejar un conjunto de 25 paquetes SSIS, generados por un equipo de
desarrollo. Estos paquetes realizan la consolidación de los datos de tres sistemas de
origen: IBM DB2, Oracle y Flat File exportados de un sistema heredado. El destino es una
base de datos SQL Server que se utiliza para Customer Relationship Management (CRM)
y reportes del call-center. Las fuentes no son soportadas con la autenticación de
Windows, pero un nombre de usuario y contraseña se proporciona inmediatamente
después del cambio de contraseña mensualmente, como parte del cumplimiento de las
políticas de seguridad de la empresa. Es necesario definir los procedimientos de
implementación y hacer los paquetes independientes de la información de conexión de
usuario, de la fuente. ¿Cómo cumplir los siguientes requisitos?
1. Los paquetes deben apuntar a los servidores correctos y ser actualizados con los
nombres de usuario y contraseñas, sin necesidad de editar los paquetes en
producción. Sin embargo, los paquetes que el equipo de desarrollo le entregó,
contienen conexiones de código forzado (hard-coded). ¿Cómo puede implementar
una arquitectura flexible para manejar los cambios?

113 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. Su organización ha invertido en un entorno de prueba que refleja el entorno de
producción, por lo que el objetivo de la implementación, es desplegar todos los
paquetes para un ciclo de desarrollo, a un servidor de prueba, en el que los paquetes
pueden pasar por un proceso de aseguramiento de calidad riguroso, antes de que se
implementan en producción. Su estrategia de implementación debe incluir un conjunto
completo de archivos con un proceso automatizado de implementación, y los
paquetes deben ser desplegados a SQL Server para ambos entornos, de modo que
los paquetes pueden ser respaldados, a través de su procedimiento de backup de
base de datos. ¿Cómo debería proceder?
3. Ocasionalmente, errores son identificados, cuando se esta dándo un simple paquete
SSIS para desplegar. Para minimizar el error humano en la implementación, es
necesario un procedimiento automatizado para implementar el archivo a los
servidores de prueba y desarrollo. ¿Cómo se puede lograr esto?
Resumen de Capitulo
 A través de las configuraciones de paquetes SSIS, puede almacenar propiedades del
paquete, fuera del paquete. Las propiedades disponibles pueden venir de varios
objetos de origen: objetos a nivel de paquete, objetos Control Flow, variables,
conexiones, etc.
 Las configuraciones pueden ser almacenadas en el registro, en un archivo XML, en
una variable de entorno, en una variable de paquete padre, o en una tabla SQL
Server.
 Los paquetes pueden utilizar más de una configuración. Múltiples configuraciones se
aplican en orden, y los paquetes pueden compartir entradas de configuración.
 SSIS incluye un lenguaje de expresiones para configurar dinámicamente algún control
de flujo y objetos Data Flow. Una valiosa aplicación del lenguaje de expresiones es la
Property Expressions, que permiten propiedades en un paquete, que se actualiza en
tiempo de ejecución.
 Se puede implementar paquetes al SQL Server o al sistema de archivos, ya sea
manualmente o usando el Package Deployment Utility en BIDS.
 La implementación incorporada en SSIS es un proceso de dos pasos que consiste en
crear un kit de instalación de despliegue a través de Package Deployment Utility y
luego implementar el kit de instalación mediante el Package Installation Wizard.
 SSIS viene con la utilidad de línea de comandos DTUtil, que puede copiar, mover,
borrar, encriptar y firmar digitalmente los paquetes.

114 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
CAPITULO 4

Administración, Seguridad y Ejecución de


Paquetes SSIS
L os aspectos finales de SQL Server Integration Services (SSIS) cubiertos en este libro,
es la administración del servicio SSIS, la seguridad y la ejecución de paquetes SSIS.
La instalación de SSIS incluye un servicio de Windows, que ayuda a la disponibilidad,
gestión y seguridad de paquetes implementados a Microsoft SQL Server. Los paquetes
SSIS también tienen establecidas la seguridad en formato encriptado. En muchos
entornos, la seguridad de paquetes es una cuestión de protección de datos, procesos y
definiciones de estructura de acceso, de las personas externas de una organización o por
alguien dentro de una organización que no necesita o no debería tener estos accesos. La
seguridad SSIS en paquetes, en el servicio, e incluso en el sistema de archivos, puede
ayudar a cumplir muchos de los requisitos de seguridad en su organización.
En cuanto a la ejecución del paquete, en el Capítulo 1, "Desarrollando paquetes SSIS," y
el Capítulo 2, "Depuración y tratamiento de errores en SSIS," trabajamos en Business
Intelligence Development Studio (BIDS) para probar la ejecución a través del entorno de
depuración durante el desarrollo. Además, el Capítulo 3, "Implementación y configuración
de paquetes SSIS," ha cubierto el despliegue de paquetes de un entorno de desarrollo a
un entorno de prueba y, en definitiva, al entorno de producción. El último paso en el ciclo
de vida de su paquete es poner en práctica una estrategia de ejecución. Este capítulo
trata sobre la seguridad y ejecución del paquete, así como diversos aspectos de gestión
que no hemos discutido aún.
Objetivos de examen en este capítulo:
 Instalar y mantener componentes SSIS.
 Administrar la ejecución de paquetes SSIS.
 Establecer la configuración de seguridad SSIS.
Antes de Empezar
Para completar este capítulo, deberá tener:
 Conocimiento de cómo trabajar en BIDS para crear nuevos paquetes y desarrollar
objetos básicos.
 Experiencia en el trabajo en SQL Server 2008 y en el uso de SQL Server
Management Studio (SSMS) para conectarse a bases de datos.
 Conocimiento de la distribución de paquetes y el almacenamiento de paquetes.
 Entendimiento de los roles en las bases de datos y experiencia en la seguridad del
sistema de archivos.

Lección 1: Gestión de Seguridad del Servicio SSIS y


Configuración de Seguridad de Paquetes
El servicio SSIS es instalado, cuando se instala los componentes Integration Services de
SQL Server 2008 en un servidor.
El servicio SSIS ayuda en la gestión de los paquetes implementados a SQL Server,
activando SSMS para conectarse al servicio y luego administrar, asegurar, supervisar y
ejecutar los paquetes. El servicio SSIS no es obligatorio para ejecutar los paquetes, pero
puede ser beneficioso para la ejecución de paquetes, porque el servicio realiza el caché
de los componentes SSIS en la memoria, permitiendo un mas rapido tiempo de arranque,

115 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
durante la ejecución. El más grande beneficio para utilizar el servicio SSIS es la gestión y
la seguridad de paquetes implementados a SQL Server.
Esta lección empieza por mirar con más detalle el servicio SSIS en conjunto con SSMS y
luego explora las consideraciones que necesita analizar, si está planeando utilizar SSIS
en un entorno de clúster. Por último, este capítulo se ocupara de los aspectos
importantes de seguridad de paquetes implementados a SQL Server, así como la
encriptación de seguridad dentro de un paquete.
Administrar el servicio SSIS
El servicio SSIS es un servicio de Windows denominado SQL Server Integration Services
10.0, y corre el archivo ejecutable MsDtsSrvr.exe. Puede administrar este servicio como
lo hacen otros servicios de Windows. Sin embargo, asegúrese de usar el SQL Server
Configuration Manager para configurar los requisitos de arranque y la cuenta de servicio.
Después de que el servicio se ha iniciado, puede conectarse a ella a través de SSMS. En
la ventana Connect To Server, cambie el tipo de servidor a Integration Services. Después
que se conecte al servicio SSIS, la ventana del Object Explorer en SSMS le permite
administrar, asegurar y ejecutar paquetes implementados en el servidor. La Figura 4-1,
muestra SSMS conectado al servicio SSIS.
En el Object Explorer, encontrarás dos carpetas de nivel superior: Running Packages y
Stored Packages.
IMPORTANTE: INSTALANDO COMPONENTES PERSONALIZADOS
Si necesita instalar un componente personalizado (asi como, una tarea personalizada,
proveedor de registro, origen, transformación o destino), el componente debe ser
instalado en todos los servidores que requieren el uso del componente. Copiar el
ensamblado del componente en la carpeta %Archivos de programa%\ Microsoft SQL
Server\100\DTS\, luego, registrar el ensamblado con el gacutil.exe con el modificador /i
para la instalación. Después de que el componente es registrado, puede añadirlo a la
barra de herramientas BIDS, haciendo clic derecho en la Toolbox y seleccionando
Choose Items

Figura 4-1
La Carpeta Running Packages
El servicio SSIS monitorea paquetes que se ejecutan en el servidor, ya sea que se
almacenan en el servidor o sean ejecutados de un proyecto o de un sistema de archivos.
Por lo tanto, se puede conectar con el servicio SSIS en SSMS y actualizar la carpeta
Running Packages, para ver que paquetes están ejecutandose actualmente. Además,
puede hacer clic derecho en un paquete en ejecución y luego, seleccionar Stop para

116 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
finalizar la ejecución del paquete después de que la siguiente tarea se complete (no
necesariamente de inmediato).
La Carpeta Stored Packages
La carpeta Stored Packages tiene dos subcarpetas, File System y MSDB; como se puede
ver en la Figura 4-1. La carpeta File System no muestra todos los archivos en el servidor,
en su lugar muestra sólo los archivos que se almacenan en la ubicación del almacén de
paquetes. El almacén de paquetes se encuentra por defecto en la carpeta %Archivos de
programa%\Microsoft SQL Server\100\DTS\Packages\. Sin embargo, puede cambiarlo, a
una ubicación diferente. El servicio utiliza un archivo de configuración XML que contiene
la ruta al almacén de paquetes, de la siguiente manera:
C:\Archivos de programa\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml
Puede editar este archivo XML y cambiar el valor del elemento <StorePath> a una
diferente ruta absoluta. El valor también acepta rutas relativas. El servicio muestra
algunas subcarpetas bajo esta ubicación del almacén de paquetes, y SSMS las muestra
como subcarpetas en la consola SSMS.
La carpeta MSDB muestra los paquetes que se han implementado a SQL Server. Estos
paquetes se almacenan en la base de datos MSDB de SQL Server en una tabla llamada
[dbo].[sysssispackages]. Puede crear carpetas virtuales en la carpeta MSDB e importar
paquetes directamente a estas subcarpetas. La Figura 4-1 muestra dos subcarpetas de
la carpeta MSDB: Data Collector y Maintenance Plans. Estos son para paquetes del
sistema ya sea generadas por el plan de mantenimiento o usado por el subsistema Data
Collector de SQL Server 2008.
Administrar paquetes en SSMS
Después de haber implementado o importado un paquete en SQL Server o en el almacén
de paquetes, puede realizar algunas tareas de gestión de paquetes. La Figura 4-2,
muestra el menú contextual para un paquete en SSMS.

Figura 4-2
El menú contextual muestra varias opciones. Las opciones New Folder e Import Package
son para la carpeta MDSB misma, para crear una carpeta virtual o añadir un nuevo
paquete de sistema de archivos.
La opción Export Package le permite tomar un paquete implementado y desplazarlo al
sistema de archivos o a otro SQL Server. El Upgrade Packages es para paquetes SSIS
en SQL Server 2005 que necesitan ser actualizados a paquetes SSIS en SQL Server
2008. Un asistente le guiará en el proceso de actualización.
El Package Roles es para la gestión de la seguridad de los paquetes implementados a la
base de datos MSDB, que se discutirá más adelante en esta lección. También puede

117 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
ejecutar un paquete usando la opción Run Package o eliminar el paquete implementado
usando la opción Delete.
Configurar el Servicio SSIS en un Entorno Clúster de Windows
SSIS es uno de los componentes de SQL Server 2008 que no soporta instancias. Esto
significa que sólo puede haber un servicio SSIS instalado por servidor. Además, el
servicio SSIS no es compatible con clúster durante la instalación, por lo que necesita ser
configurarlo por separado si se trabaja con un Clúster Windows.
Puede encontrar detalles sobre la configuración SSIS en un entorno clúster en el Libro
blanco "Configuring Integration Services in a Cluster" (http://msdn.microsoft.com/en-
us/library/ms345193.aspx). En pocas palabras, hay dos formas de configurar el servicio
SSIS en un entorno clúster:
 Instalando el servicio SSIS independientemente de los recursos del clúster.
Puede instalar componentes SSIS en todos los nodos del cluster, y por defecto, no
serán parte de algun grupo de recursos del clúster. El servicio se iniciará en todos los
nodos, y puede ejecutar los paquetes desde cualquier nodo del clúster. Si todos los
paquetes se almacenan en un recurso compartido de red que no es parte del almacén
de paquetes, no necesita configuración adicional.
Si desea centralizar todos los paquetes en SQL Server, es necesario cambiar el
archivo MsDtsSrvr.ini.xml. Cambiar el elemento <ServerName> para referenciar a un
servidor específico y a la instancia; si el SQL Server esta en el clúster, utilice el
nombre del servidor virtual y la instancia. Por último, cambie este archivo en todos los
nodos para que se pueda conectar con el servicio SSIS en cualquier máquina y ver
los mismos paquetes.
 Integración del servicio SSIS en un grupo clúster. Puede agregar el servicio SSIS
como un recurso de clúster, un proceso detallado en la sección de Libro blanco
"Configuring Integration Services in a Cluster" mencionada anteriormente. Si desea
almacenar paquetes en el almacén de paquetes, debería escoger este enfoque,
porque el servicio compartido se ejecuta en un solo nodo a la vez y puede hacer
referencia al nombre virtual del servidor. El servicio tendría que apuntar a un archivo
MsDtsSrvr.ini.xml compartido en una unidad compartida en el mismo grupo de
recursos clúster, que el servicio. Esto requiere un cambio de registro, que también
está documentado. La ubicación del almacén de paquetes debe estar también, en la
unidad compartida en el mismo grupo de recursos de clúster.
TEMAS CLAVE
Cuando se ejecuta un paquete en un nodo de servidor de entorno clúster Windows y el
nodo falla, aplique las reglas de reinicio. Puede activar los checkpoints en los paquetes y
tener los archivos checkpoint creados en un recurso compartido, de manera que si el
paquete necesita ser reiniciado, puede localizar y utilizar el archivo checkpoint.
Agregando Seguridad en Paquetes SSIS
La característica de seguridad integrada SSIS le permite añadir encriptación de seguridad
a cada uno de sus paquetes o conjunto de roles de seguridad para los paquetes
desplegados a MSDB. Los paquetes SSIS de por si no contienen ningun origen o destino
de datos, pero pueden proporcionar información acerca de los datos relacionados que
están procesando. La seguridad SSIS es importante por dos razones principales:
 Información Connection. Aunque las definiciones de paquetes no contienen ningún
dato de sus orígenes o destinos, tienen información de conexión en los paquetes, por
lo que es necesario limitar el acceso a ellos.
 Información Schema. Sus paquetes extraen datos de origenes y lo transfieren a los
destinos, aunque alguien no pueda acceder al origen o al destino directamente, si esa

118 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
persona adquiere un paquete sin cifrar, él o ella tendrá acceso a lo que estos
orígenes y destinos muestren.
Por lo tanto, se necesita ver la forma de impedir el acceso a cualquiera, a conexiones o al
paquete completo. Hay tres formas de limitar el acceso a los paquetes:
 Puede aplicar roles de seguridad de SQL Server para cualquier paquete, que se ha
desplegado en la base de datos MSDB de SQL Server. Puede definir que inicios de
sesión SQL o grupos Windows o usuarios tienen acceso de lectura y escritura a un
paquete, que controla si alguien puede ejecutar o exportar un paquete.
 Puede emplear encriptación de seguridad mediante el nivel de protección de paquete,
en la que parte o todo el paquete está cifrado. Puede establecer las propiedades de
cifrado de seguridad en el desarrollo de un paquete en BIDS, cuando implementa un
paquete, o al importar o exportar un paquete. Puede aplicar estas propiedades ya sea
para todo el paquete o para datos sensibles solamente. Es importante que entienda
completamente que asegurar un paquete, significa todo lo relativo a información de
conexión e información del esquema.
 Puede utilizar una seguridad a nivel de archivo, en el que se pueden aplicar los
derechos de acceso al archivo o carpeta si los paquetes residen en el sistema de
archivos de una computadora.
Esta sección comienza observando los roles de los paquetes en MSDB y cómo cifrar
parte de un paquete o el paquete completo a través de los niveles de protección del
paquete y contraseñas de paquete. También puede utilizar la herramienta de línea de
comandos DTUtil.exe para ayudarle a gestionar la seguridad.
Asignar Roles y Seguridad de Paquetes Almacenados en MSDB
Si ha implementado un paquete a SQL Server en la base de datos MSDB, puede
implementar seguridad adicional con respecto a quién puede ver, ejecutar o modificar un
paquete mediante el uso de roles de base de datos. Los roles son fijados, a roles a nivel
de base de datos, y se les asigna a través de la base de datos MSDB. Los roles se
asignan para acciones de lectura y/o escritura de la siguiente manera:
 Acciones de lectura enfocadas a la visualización y ejecución de paquetes.
 Acciones de escritura aplicadas a mover paquetes que entran y salen de MSDB sin
ejecutar los paquetes.
Puede asegurar los paquetes a través de roles en MSDB, mediante la conexión con el
servicio SSIS en SSMS.
Después de conectarse al servicio SSIS, necesita abrir el cuadro de diálogo Package
Roles. Siga estos pasos para asegurar su paquete mediante el uso de roles:
1. En el árbol de consola, expanda la carpeta Stored Packages y luego la carpeta
MSDB.
2. Haga clic derecho en el nombre del paquete al que desea aplicar los roles de
seguridad, a continuación, seleccione Package Roles para mostrar el cuadro de
diálogo Package Roles, que se muestra en la Figura 4-3.
Cuando se abre el cuadro de diálogo Package Roles para un paquete por primera vez, el
cuadro de diálogo muestra valores por defecto, para el rol de lectura y el rol de Escritura.
Los roles predeterminadas se crean con la base de datos MSDB, en la instalación SQL
Server 2008 y puede ser utilizado por el servicio SSIS y sus paquetes. Puede utilizar los
roles integrados y asignar usuarios a los roles o crear nuevos roles de base de datos en
MSDB y luego hacer que su paquete utilice estos roles personalizados, no se puede
hacer ambas cosas. Tampoco se puede seleccionar múltiples roles en la lista
desplegable, Reader Role o Writer Role. Pero esta limitación se compensa con la
flexibilidad de los roles integrados y la capacidad de asignar a usuarios o inicios de
sesión de base de datos, de estos roles en MSDB. La Tabla 4-1 define la seguridad de
los roles integrados SSIS en MSDB.

119 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 4-3
Considere las siguientes directrices para decidir qué roles usar:
 Los administradores de ejecución SSIS deben tener privilegios de ejecución, pero no
deben añadir paquetes a SQL Server, debe asignar el rol db_ssisoperator, que puede
ver, ejecutar, y exportar paquetes.
 Para usuarios que deben poder trabajar sólo con los paquetes que han creado, debe
asignar el rol db_ssisltduser, que tiene derechos de acceso limitado y permite a los
usuarios ejecutar y exportar sólo los paquetes que estos usuarios han importado a
SQL Server. Los usuarios asignados al rol db_ssisltduser no pueden trabajar con las
carpetas de otros usuarios.
Tabla 4-1 Roles integrados SSIS en MSDB
ROL ACCIONES LECTURA ACCIONES ESCRITURA
db_ssisadmin Ver todos los paquetes. Eliminar todos los paquetes.
Ejecutar todos los paquetes. Cambiar todos los roles de paquete.
Exportar todos los paquetes. Importar paquetes.
Ejecutar todos los paquetes en SQL
Server Agent.
db_ssisltduser Ver paquetes de usuario. Eliminar paquetes de usuario.
Ejecutar paquetes de usuario. Cambiar roles de paquete de usuario.
Exportar paquetes de usuario. Importar paquetes.
db_ssisoperator Ver todos los paquetes. Ninguno.
Ejecutar todos los paquetes.
Exportar todos los paquetes.
Ejecutar todos los paquetes en SQL
Server Agent.
Windows Admin Ver detalles de ejecución de paquetes Detener paquetes en ejecución actuales.
en ejecución actuales.
Entender y Establecer el Nivel de Protección de Paquetes
La propiedad ProtectionLevel de un paquete cifra la información de definición de paquete
que se encuentra en el archivo XML referenciado. Se establece la propiedad
ProtectionLevel en el nivel de paquete cuando se está editando el paquete en BIDS. Esto
significa que se define lo que debe ser cifrado y cómo debe ser cifrado, para todo el
paquete. También se puede establecer una propiedad PackagePassword, que se utiliza
cuando el ProtectionLevel requiere metadatos cifrados en el paquete, con una
contraseña. La Figura 4-4, resalta las propiedades de seguridad relevantes del paquete.
Por defecto, el paquete está configurado para utilizar el ProtectionLevel
EncryptSensitiveWithUserKey. Esto significa que si se crea un paquete con
ProtectionLevel por defecto y su paquete contiene información confidencial (como una
conexión, con una contraseña), las conexiones que contiene la contraseña serán
encriptadas y sólo lo podra ver, el autor del paquete, si el paquete se abre en BIDS en el
equipo en el que se desarrolló. En este caso, puede abrir el paquete y no tendrá que
volver a escribir las contraseñas de conexión, otros usuarios pueden abrir el paquete,

120 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
pero tienen que conocer las contraseñas de conexión para probar el paquete en BIDS.
Fuera del cuadro, solo las propiedades del paquete marcadas como sensibles son
conexiones con los nombres de usuario y contraseñas, sin embargo, si escribe una tarea
personalizada, componente o administrador de conexión, puede especificar las
propiedades que son sensibles.
La Tabla 4-2 resume las opciones de paquete ProtectionLevel disponibles.

Figura 4-4
Tabla 4-2 Opciones de Paquete ProtectionLevel
OPCION DESCRIPCION
DontSaveSensitive La información confidencial no se guarda en el paquete en absoluto. Cada
vez que se vuelve a abrir el paquete en BIDS, las contraseñas de conexión
deben ser reingresadas. Para la ejecución del paquete, la contraseña debe
ser almacenada en una configuración de paquetes o pasada al paquete
estableciéndola en la línea de comandos. Esta es la opción recomendada
si está utilizando exclusivamente la autenticación de Windows para las
conexiones.
EncriptAllWithPassword El paquete completo se cifra con una contraseña que se establece en la
propiedad PackagePassword. Para abrir el paquete en BIDS, es necesario
introducir la contraseña correcta del paquete y el paquete no se puede
ejecutar sin ingresar la contraseña al paquete en ejecución.
EncriptAllWithUserKey Todo el paquete está cifrado basado en el usuario actual y el ordenador.
Sólo el último usuario que diseñó o exportó el paquete puede diseñar o
ejecutar el paquete.
Un paquete no se puede abrir en BIDS a menos que sea abierto por el
usuario que lo desarrolló, en el equipo en el que lo desarrolló. El paquete
sólo puede ser ejecutado a través de la misma cuenta de usuario en el
mismo equipo.
EncriptSensitiveWithPassword La información confidencial en el paquete está cifrada basada en una
contraseña del paquete, que se encuentra en la propiedad
PackagePassword. Cada vez se vuelve a abrir el paquete, una contraseña
debe ser proporcionada. Si la contraseña no es proporcionada, el paquete
se abre, pero todos los datos confidenciales serán reemplazados con
espacios en blanco. Si un usuario intenta ejecutar el paquete sin una
contraseña, la ejecución fallará.
EncriptSensitiveWithUserKey La información confidencial (contraseñas de conexión) en el paquete está
cifrada basada en el usuario actual y el ordenador. Si el mismo usuario
vuelve a abrir el paquete, no se cambia nada. Si un usuario distinto abre el
paquete, toda la información confidencial se borra. Otros usuarios pueden

121 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
diseñar o ejecutar el paquete, pero necesitan introducir la contraseña o
pasar la contraseña en el paquete, a través de la línea de comandos o
configuraciones SSIS.
ServerStorage Este ajuste sólo se puede utilizar cuando un paquete se almacena en una
base de datos SQL Server. El Almacena-miento del servidor significa que
no hay nada en la definición del paquete que está cifrada. En cambio, el
paquete completo está protegido mediante un rol de base de datos SQL
Server. Esta opción no se admite cuando se guarda un paquete en el
sistema de archivos.
Si el cifrado está habilitado en el paquete mediante el uso de cualquiera de las opciones
ProtectionLevel, excepto ServerStorage y DontSaveSensitive, los datos cifrados se
guardan junto con el resto de la información del paquete en el archivo .dtsx. Si el paquete
está cifrado, todo el código XML en .dtsx está encriptado, y el XML no puede ser leído por
un editor de texto. SSIS cifra los datos utilizando el Microsoft Data Protection Application
Programming Interface (DPAPI).
TEMAS CLAVE
Si está implementando paquetes SSIS para un nuevo servidor, con la configuración
ProtectionLevel a EncryptSensitiveWithUserKey, algunas contraseñas de conexión en el
paquete no se pueden desencriptar, y la ejecución del paquete fallará. Esto se aplica
incluso si está usando las herramientas de implementación en SSIS y se ejecuta el
manifiesto de implementación en una computadora diferente, de la que los paquetes
fueron desarrollados.
Al elegir una configuración de paquete ProtectionLevel, considere los siguientes puntos
clave:
 Si todas las conexiones utilizan la autenticación de Windows y, por tanto, no requieren
contraseñas, porque los usuarios se autentican a través de Windows, tiene
información confidencial en el paquete (con la excepción de un componente
personalizado que tiene confidencialidad definida). En esta situación, debe elegir
DontSaveSensitive porque no hay nada que se encripte. Su paquete puede ser
ejecutado en cualquier ordenador por cualquier usuario, siempre y cuando la cuenta
de Windows que ejecuta el paquete tenga los privilegios de seguridad apropiados,
para las conexiones.
 La información confidencial no puede ser almacenada en texto plano en un archivo de
paquete almacenado en el sistema de archivos. Así que si tienes información
confidencial en un paquete, como una contraseña de conexión, tienes que utilizar una
configuración de SSIS para actualizar la contraseña de conexión en tiempo de
ejecución o ser capaz de desencriptar la contraseña, ya sea mediante el uso de la
contraseña del paquete o por la ejecución del paquete en el mismo equipo por la
misma cuenta de usuario. Al igual que en el almacenamiento de contraseñas de
conexión en una configuración SSIS, también puede pasar la contraseña de conexión
al paquete a través de la utilidad de línea de comandos DTExec.
Asignando una Contraseña de Paquete
Si elige nivel de protección EncryptSensitiveWithPassword o EncryptAllWithPassword, es
necesario establecer una contraseña del paquete. Puede asignar una contraseña del
paquete en la ventana Properties, cuando se accede a la ficha Control Flow del
Diseñador SSIS. Use la propiedad PackagePassword, ubicada encima del valor
ProtectionLevel, como se mostró anteriormente en la Figura 4-4. Para asignar una
contraseña, haga clic en el botón de puntos suspensivos junto al cuadro
PackagePassword para mostrar el cuadro de diálogo Property Editor donde se puede
escribir la contraseña dos veces.
Para cualquiera de estos niveles de protección, si se intenta ejecutar el paquete sin
introducir una contraseña válida, la ejecución fallará

122 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
NOTA: CONSECUENCIA DE ENCRIPTAR TODO
Si el paquete completo se encripta y se intenta ver el paquete en BIDS sin proporcionar
una contraseña válida, el paquete no se abre. Si sólo los datos sensibles son encriptados,
el paquete se abre, pero todos los datos sensibles serán reemplazados con espacios en
blanco.

MUNDO REAL
Diseñar una solución de extracción, transformación y carga (ETL) SSIS que necesita para
implementarlo a un servidor diferente; a veces puede ser una experiencia frustrante,
cuando se trabaja con la configuración de cifrado, especialmente porque las contraseñas
no pueden ser incluidas en el archivo del paquete en texto plano.
Particularmente cuando se trabaja en un ambiente de equipo, la configuración de cifrado
puede ser un reto, debido a que el nivel de protección predeterminado, es
EncryptSensitiveWithUserKey. Así que si quieres pasar el desarrollo de un paquete a otra
persona, esa persona vera un error la primera vez que él o ella trate de abrirla.
Mi estrategia favorita es la de crear un ambiente de configuración SSIS coherente en
todos los equipos que vayan a ejecutar los paquetes, ya sea en una estación de trabajo
de desarrollo, un servidor de desarrollo, un servidor de aseguramiento de la calidad (QA),
un servidor de prueba, o un equipo de producción. La configuración puede ser un archivo
XML o una entrada del registro, siempre y cuando se ha incluido las contraseñas para
cualquier conexión que no permite la autenticación de Windows. Con esta configuración
en su lugar, puede cambiar la configuración de ProtectionLevel a DontSaveSensitive para
todos los paquetes, y cuando se ejecuta el paquete, se pone la contraseña de la entrada
de configuración.
A algunas personas no les gusta este enfoque ya que la contraseña está disponible en
alguna parte. Pero el tema de fondo es que la contraseña tiene que ser almacenada en
alguna parte, y la ubicación de configuración que elija necesita un nivel extra de
seguridad, asi eso signifique poner restricciones de archivos en ella o bloquear la tabla de
SQL Server donde existan.
Administrando la Seguridad de Paquetes con DTUtil
El Capítulo 3 reviso las capacidades de la utilidad de línea de comandos DTUtil, para
realizar operaciones de implementación, como mover, copiar y verificar los paquetes. La
utilidad de línea de comandos DTUtil, también puede realizar operaciones de seguridad,
como encriptar un paquete y firmar digitalmente un paquete.
Para aplicar el cifrado a un paquete, puede utilizar el parámetro de línea de comando
/ENCRYPT con DTUtil. Este parámetro requiere la ubicación del paquete y el nivel de
cifrado en la cadena de parámetro y una contraseña de paquete si el cifrado lo requiere.
El nivel de cifrado es un indicador numérico relacionado con la propiedad EncryptionLevel
de un paquete, con la siguiente equivalencia:
 0 = DontSaveSensitive
 1 = EncryptSensitiveWithUserKey
 2 = EncryptSensitiveWithPassword
 3 = EncryptAllWithPassword
 4 = EncryptAllWithUserKey
 5 = SQLServerStorage
El siguiente ejemplo encripta MyPackage.dtsx con la contraseña EncPswd:
dtutil.exe /file MyPackage.dtsx /encrypt file;MyPackage.dtsx;3;EncPswd
Para firmar digitalmente un paquete, puede utilizar el parámetro de comando /SIGN, en
conjunción con la ubicación y el identificador de certificado hexadecimal. El siguiente
ejemplo firma un paquete llamado MyPackage, que se encuentra en la instancia local de
SQL Server:

123 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
dtutil.exe /SIGN SQL;MyPackage
PRACTICA: Encriptando un Paquete y Asignando Roles de Paquete
En el primer ejercicio de esta práctica, activará un paquete cifrado usando una
contraseña y luego verá cómo la seguridad afecta a la ejecución. En el segundo ejercicio,
va a cambiar los roles de seguridad para paquetes almacenados en SQL Server.
EJERCICIO 1: Activar Encriptacion de Paquete usando una Contraseña de
Paquete
En este ejercicio, establecerá el nivel de protección de un paquete a
EncryptAllWithPassword y luego establecera la propiedad PackagePassword.
1. Abra el proyecto SSIS que ha creado en los ejercicios, en el Capítulo 3. Editar el
paquete MyPackage.dtsx, y doble clic al paquete en el Solution Explorer.
2. En el Diseñador SSIS, haga clic en la ficha Control Flow y, luego, abra la ventana
Properties para el Control Flow. (una forma de abrir la ventana Properties es
presionar la tecla F4). En la ventana Properties, busque la propiedad ProtectionLevel,
y seleccione EncryptAllWithPassword en la lista desplegable.
3. Haga clic en la propiedad PackagePassword, a continuación, haga clic en el botón de
puntos suspensivos a la derecha de la propiedad. Cuando se le pida, escriba
EncPswd para la contraseña del paquete, vuelva a escribirla en el cuadro de texto
Confirm New Password y, a continuación, haga clic en OK para guardarla.
4. Guarde el paquete, y luego ciérrelo.
5. Haga doble clic en el paquete de nuevo del Solution Explorer. Cuando se le pida que
introduzca la contraseña del paquete, haga clic en Cancel. Usted recibirá un mensaje
de error indicando que el paquete no se puede abrir. Haga clic en OK. Entonces verá
un mensaje que dice Document contains one or more extremely long lines of text....
Esto es porque el contenido del paquete encriptado es visto como una larga línea de
texto. Haga clic en No.
6. Esta vez, intente abrir el paquete y tipee EncPswd cuando se le pida que introduzca
la contraseña del paquete. Haga clic en Yes en el cuadro de diálogo que dice
Document contains one or more extremely long lines of text.... Ahora el paquete se
abre en el Diseñador SSIS.
EJERCICIO 2: Cambiar Roles de Seguridad para Paquetes Almacenados en
SQL Server
En este ejercicio, trabajara con los roles MSDB para SSIS, primero importando un
paquete en el servicio SSIS y luego definiendo los roles de seguridad para el paquete.
Además, el paquete esta cifrado con una contraseña, y introducirá la contraseña del
paquete cuando el paquete es importado.
1. Abrir SSMS, y cuando se le pida conectarse a un servicio, cambie el tipo de servicio a
Integration Services y especifique localhost como el servidor. Si tiene problemas
para conectarse, asegúrese de que su SSIS y los servicios de SQL Server se han
iniciado.
2. Vaya a los Stored Packages, carpeta MSDB, a continuación, haga clic derecho en la
carpeta MSDB y seleccione Import Package.
a. En la lista desplegable Package Location, seleccione File System.
b. En el cuadro Package Path, escriba la ruta a MyPackage.dtsx en el sistema de
archivos o haga clic en el botón de puntos suspensivos para desplazarse a la
ubicación del paquete. Asegúrese de seleccionar el paquete exacto de los
ejercicios del proyecto.
c. Después de identificar la ruta del paquete, confirme que el cuadro de texto
Package Name se ajusta a MyPackage, y vea que el nivel de protección se
establece a Keep protection level of the original package.

124 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
d. Haga clic en OK para importar el paquete en la base de datos MSDB. Cuando se
le pida que introduzca la contraseña, tipee EncPswd, a continuación, haga clic en
OK de nuevo.
e. Si ha realizado los pasos de implementación del Capítulo 3, también se le pedirá
que sobrescriba el MyPackage existente. Haga clic en Yes.
3. Haga clic derecho en el paquete MyPackage que acaba de importar en la carpeta
MSDB, a continuación, seleccione Packages Roles.
4. Cambie de lista desplegable ReaderRole el valor a db_ssisadmin, que sólo permite a
usuarios que son miembros del role MSDB db_ssisadmin, ejecutar el paquete.
5. Haga clic en OK en el cuadro de diálogo Package Roles para aplicar el ajuste.
Verificación Rápida
1. ¿Puedo configurar la seguridad de un paquete, para que pueda almacenar una
contraseña en texto plano en el archivo referido .dtsx, en el sistema de archivos?
2. ¿Qué información almacenada en la definición del paquete, podría causar un riesgo
de seguridad si es encontrada?
3. Si su inicio de sesión de base de datos, se asigna al rol db_ssisoperator, que sólo
tiene acceso de lectura y no tiene acceso de escritura a un paquete almacenado en
MSDB, ¿Qué puede hacer con el paquete?
Respuestas de Verificación Rápida
1. No, la información confidencial, como contraseñas de conexión, no puede ser
almacenado como texto plano en el archivo del paquete, en el sistema de archivos. La
única manera de almacenar la contraseña de conexión en el archivo, es encriptar la
información confidencial establecimiendo ProtectionLevel a
EncryptSensitiveWithPassword o a EncryptSensitiveWithUserKey. Una mejor opción
es establecer el ProtectionLevel a DontSaveSensitive y utilizar una configuración
SSIS para almacenar la contraseña de conexión.
2. A pesar de que un archivo de paquete no contiene datos, contiene los detalles del
esquema acerca de las fuentes de entrada y destinos. Incluso si estos origenes y
destinos no pueden ser accesadas, esta información puede ser un riesgo para la
seguridad, ya que expone la tabla y los nombres de columna.
3. Debido a que se asigna el rol db_ssisoperator, puede ejecutar el paquete dentro de
MSDB, pero no se puede eliminar el paquete del almacén de datos MSDB o importar
paquetes dentro del almacen de datos.

Leccion 2: Ejecucion y Programacion de Paquetes


Fuera del entorno de desarrollo, puede ejecutar un paquete en una de dos formas
principales: mediante programación utilizando el modelo de objetos SSIS o mediante el
uso de herramientas de línea de comandos (incluidos en SQL Server Agent).
Utilizando el modelo de objetos SSIS, puede cargar y ejecutar los paquetes en forma
programada dentro de una aplicación. Puede encontrar los métodos para ejecutar un
paquete mediante programación en las dos clases diferentes, dentro del namespace
Microsoft.SqlServer.Dts.Runtime:
 La clase Application Incluye dos métodos: el método LoadFromSQLServer y el
método LoadPackage, para cargar un paquete de SQL Server o del sistema de
archivos, respectivamente.
 La clase Package Incluye un método Execute, que ejecuta el paquete y devuelve la
enumeración DTSExecResult con el éxito o el fracaso de la ejecución.

125 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Puede encontrar más detalles sobre la ejecución programatica y el modelo de objetos en
la referencia Integration Services Class Library en el sitio web de MSDN o en los Libros
en Pantalla de SQL Server 2008.
El método de ejecución más común es a través de la línea de comandos. SSIS se
embarca con una utilidad de línea de comandos denominada DTExec, que puede ser
incrustado en cualquier otra línea de comandos de ejecución o herramienta de
programación, y una utilidad de línea de comandos UI denominada DTExecUI, que le
ayuda a construir la línea de comandos. Además, con SQL Server 2008, el SQL Server
Agent tiene compatibilidad para la ejecución de línea de comandos SSIS.
En esta lección, aprenderá cómo ejecutar paquetes a través de SSMS, SQL Server Agent
Jobs, Package Execution Utility (DTExecUI) y la herramienta de ejecución de línea de
comandos, DTExec.
Uso de DTExecUI para Configurar Ejecucion de Paquetes
El archivo ejecutable de línea de comandos DTExec, es una utilidad completamente
implementada con capacidades amplias de parametrización. Puede generar la línea de
comandos manualmente, por la aplicación de los parámetros del comando, para cumplir
con los requisitos de ejecución; pero para ahorrar tiempo y evitar errores, puede utilizar la
utilidad del constructor de línea de comandos denominada DTExecUI.
DTExecUI es una herramienta visual que, naturalmente agrupa las opciones de
parámetros de comando. El servidor en el que se ejecuta DTExecUI, debe tener SSIS
instalado. Para abrir DTExecUI, tipee DTExecUI ya sea desde el prompt de comando, o
seleccionando Start y luego Run para abrir el cuadro de diálogo Run. Puede abrir la
herramienta desde el cuadro de diálogo Run o desde el prompt de comando sin
especificar la ruta. La Figura 4-5, muestra la herramienta DTExecUI, que agrupa a los
parámetros de comando, en el panel izquierdo.
Para utilizar DTExecUI, siga estos pasos:
1. Abra la Execute Package Utility mediante la ejecución de DTExecUI bien, por
seleccionar Inicio y luego en la casilla Run, entrar DTExecUI.exe en el cuadro de
diálogo Run, o a través de un prompt de comando (Símbolo del sistema).
2. En la página de propiedades General, seleccione el paquete en ejecución, para que
pueda modificar una propiedad en las otras páginas. En la lista desplegable Package
Source, seleccione File System, SSIS Package Store o SQL Server, dependiendo de
dónde se encuentra su paquete.
3. Después de identificar la ubicación del paquete, seleccione el paquete específico para
su ejecución. Si el paquete se almacena en SQL Server o en el SSIS Package Store,
es necesario especificar los detalles de conexión al servidor SQL Server 2008,
proporcionando el nombre del servidor. SQL Server también requiere que provea un
nombre de usuario y contraseña o especificar Autenticación de Windows. Todas las
ubicaciones que elija, requieren que se especifique el paquete en la caja Package,
haciendo clic en el botón de puntos suspensivos a la derecha de la caja Package.
4. A continuación, tiene que especificar cómo el paquete debe ser ejecutado, por la
configuración de otras propiedades de ejecución del paquete. Seleccionando las
páginas de propiedades diferentes, a la izquierda desde Configurations hasta
Verification que permitirá anular configuraciones, como conexiones, registros, y
salidas. La Tabla 4-3 describe las opciones de configuración de ejecución.

126 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 4-5
Tabla 4-3 Opciones de Configuracion de DTExecUI
PAGINA DESCRIPCION
General Como se describió anteriormente en los pasos 2 y 3, se puede especificar
la ubicación del paquete y el nombre en esta página de propiedades.
Configurations Además de las configuraciones ya definidas en el paquete, puede agregar
configuraciones XML a un paquete en tiempo de ejecución, a través de
esta página de propiedades. Estas configuraciones XML se añaden a las
configuraciones que existen actualmente en el paquete.
Command Files Los parámetros DTExec.exe se pueden almacenar en un archivo
separado, y las propiedades Command Files le permiten especificar el
archivo de texto que contendrá los parámetros.
Connection Managers Para el paquete seleccionado, las conexiones se pueden sobrescribir en
tiempo de ejecución con la nueva información de conexión. Seleccione las
conexiones a sobrescribir, y a continuación, modifique manualmente la
cadena de conexión.
Execution Options La página de propiedades Execution Options permite detalles avanzados
de ejecución, para la ejecución del paquete, incluyendo las siguientes:
 Validate Package Without Executing
 Maximum Concurrent Executables
 Enable Package Checkpoints
 Browse To Checkpoint File
 Override Restart Options
 Restart Options
Reporting Las propiedades Reporting definen la información que se devuelve a la
salida, de línea de comandos. Los eventos seleccionados determinan el
nivel de información que se devuelve.
Logging Los proveedores de registro se pueden añadir en tiempo de ejecución.
Set Values Las propiedades Set Values le permiten anular las propiedades del
paquete, incluyendo variables de paquete.
Verification En esta página de propiedades, establezca las opciones de verificación
que permiten a un paquete ejecutarse, usando lo siguiente:
 Execute Only Signed Packages
 Verify Package Build
 Build
 Verify Package ID
 Package ID
 Verify Version ID

127 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
 Version ID
Command Line La página propiedades Command Line muestra la línea de comandos que
se pasarán a DTExec. Todas las opciones que ha configurado en las otras
páginas de propiedades se presentaran en el texto de línea de comandos,
que puede editar de forma manual.
5. El paso final de la configuración es o bien ejecutar el paquete inmediatamente o
utilizar la salida de línea de comandos. Al hacer clic en Ejecutar inmediatamente se
ejecuta el paquete, que muestra detalles de la ejecución en una ventana separada,
similar a la ventana Execution Results en BIDS.
Por otra parte, seleccionando el contenido de la caja de texto Command Line en la
página de propiedades Command Line le permite copiar el resultado de salida de
parámetros de línea de comandos. A continuación, puede pegarlo en un archivo por
lotes, una herramienta de línea de comandos, o una ventana Command Prompt.
Asegúrese de usar el prefijo DTExec en la línea de ejecución. La Figura 4-6, muestra
la línea de propiedades Command Line de la interfaz DTExecUI.

Figura 4-6
La página de propiedades Set Values en DTExecUI le permite anular las propiedades del
paquete en tiempo de ejecución. La página tiene dos campos de entrada: Propery Path y
Value. Para rellenar la ruta de propiedad a una variable, es necesario utilizar la siguiente
sintaxis:
\Package.Variables[user::MyVariable].Value
Por ejemplo, si tuviera una variable de cadena llamada strUserName y quisiera
establecer el valor de DTExecUI, debe utilizar el siguiente valor para especificar la
Property Path en la página de propiedades Set Values:
\Package.Variables[user::strUserName].Value
En el cuadro de texto Value, escriba el nombre del usuario que desea asignar a la
variable strUserName cuando ejecute el paquete.
El resultado de establecer los detalles de ejecución a través de DTExecUI es una salida
de línea de comandos que se puede encontrar en la página de propiedades Command
Line de la utilidad DTExecUI y usar para los parámetros de línea de comandos con
DTExec.
Usando DTExec para Ejecucion de Paquetes
Puede ejecutar paquetes SSIS a través de cualquier utilidad de línea de comandos,
haciendo referencia al archivo ejecutable DTExec, en la utilidad de línea de comandos o
en un archivo por lotes. Como se describe en la sección anterior, "Uso de DTExecUI para

128 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Configurar la Ejecución de Paquetes," la utilidad DTExec viene con muchos parámetros
de línea de comandos. Los detalles de estos parámetros se encuentran fuera del alcance
de esta cobertura, pero aquí tenemos algunos ejemplos:
Para ejecutar un paquete SSIS guardado en SQL Server, con la autenticación de
Windows, utilice el siguiente código:
dtexec.exe /sql MyPackage /server SQLProd
Para ejecutar un paquete en el sistema de archivos, utilice el siguiente código:
dtexec.exe /file "c:\MyPackage.dtsx"
Para ejecutar un paquete que se ha guardado en el sistema de archivos con opciones
adicionales de registro, utilice el siguiente código:
dtexec.exe /f "c:\MyPackage.dtsx" /l
"DTS.LogProviderTextFile;c:\SSISlog.txt"
Para ejecutar un paquete almacenado en el sistema de archivos, pasándolo a un archivo
de configuraciónXML, ejecute el siguiente código:
dtexec.exe /f "c:\pkgOne.dtsx" /conf "c:\pkgOneConfig.cfg"
TEMAS CLAVE
Si ejecuta un paquete SSIS y desea crear un archivo de volcado de registro, si se
produce un error, puede utilizar el interruptor /DumpOnErr[or]. Esto es diferente del
interruptor /Dump, que crea el volcado, cuando ocurre un evento specificado.
Cuando un paquete se ejecuta desde la línea de comandos, el paquete siempre se
ejecutará desde el lugar que DTExec es ejecutado, no de la ubicación en la que se
almacena. Los Paquetes SSIS se pueden localizar en los archivos remotos compartidos o
SQL Servers remotos, pero el paquete se ejecutará desde donde la declaración DTExec
se encuentre.
Ejecutando Paquetes en SSMS con el Servicio SSIS
Como aprendió en la Lección 1, puede utilizar SSMS para conectarse al servicio SSIS. El
servicio SSIS le da la capacidad de administrar y asegurar los paquetes almacenados en
SQL Server. Además de proporcionar la seguridad, el servicio SSIS también le permite
ejecutar los paquetes manualmente, cuando se está conectado a SSIS y al servicio
SSMS.
Para ejecutar un paquete manualmente en SSMS, siga estos pasos:
1. Conectarse al servicio SSIS de SSMS, y busque el paquete que desea ejecutar, ya
sea en la carpeta File System (el almacén de paquetes) o en la carpeta MSDB.
2. Haga clic derecho en el paquete, y luego seleccione Run Package, como se mostró
anteriormente en la Figura 4-2.
En este punto, SSMS abrirá la utilidad DTExecUI. DTExecUI será preconfigurado con la
información de la ubicación del paquete, en la página de propiedades General de la
herramienta, y puede configurar las otras páginas de propiedades como se describió
anteriormente. Se ejecuta el paquete haciendo clic en el botón Execute en la parte inferior
de la interfaz DTExecUI. La carpeta Running Packages en SSMS mostrará todos los
paquetes actuales en ejecución en el servicio SSIS.
Creando SQL Server Agent Jobs para Ejecutar Paquetes SSIS
El Agente SQL Server es un servicio de Windows, que puede programar y ejecutar
trabajos de la misma manera que lo hacen otras herramientas de programación. Puede
programar estos trabajos para que se ejecuten en un horario específico o en respuesta a
un evento específico, o puede ejecutar el trabajo manualmente. Cada trabajo SQL Server
Agent puede tener uno o más pasos.
Después de que el servicio Agente SQL Server se ha iniciado, siga estos pasos para
crear un nuevo trabajo que programa y ejecuta paquetes:

129 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
1. Abrir SSMS, y luego conectarse a la instancia de base de datos SQL Server, donde
se inicia el SQL Server Agent. La gestión de SQL Server Agent se inserta en la
conexión del motor de base de datos del Explorador de objetos en el SSMS.
2. Dentro de la ventana Object Explorer, expanda la instancia de base de datos SQL
Server a continuación, expanda SQL Server Agent, como muestra la Figura 4-7.

Figura 4-7
MEJORES PRÁCTICAS: ACTIVAR SQL SERVER AGENT
Por defecto, el servicio SQL Server Agent está deshabilitada. Para habilitar e iniciar el
SQL Server Agent, use el SQL Server Configuration Manager pora modificar las
propiedades del servicio, en el contenedor SQL Server 2008 Services. El servicio SQL
Server Agent depende del servicio SQL Server, que es el servicio Database Engine.
Para programar un paquete SSIS, es necesario crear un nuevo paso, en un Job de SQL
Server Agent.
1. Crear un nuevo Job, dando clic derecho en la carpeta Jobs en el Object Explorer, y
luego seleccione New Job. Indique un nombre descriptivo para el trabajo en el cuadro
Name, para que el trabajo se pueda identificar entre los otros trabajos.
2. En Select a page, seleccione la pestaña Steps, en la ventana New Job, haga clic en
New para abrir la ventana New Job Step. Este paso es el que se configura para
ejecutar un paquete, asi que necesita introducir un nombre que describe el paso de
trabajo.
3. En la lista desplegable Type, seleccione SQL Server Integration Services, para
actualizar la interfaz para el resto de la ventana, personalizándolo para la ejecución
de un paquete SSIS. La Figura 4-8, muestra la ventana New Job Step configurado
para ejecutar un paquete SSIS.
4. Tenga en cuenta que en este momento, la ventana New Job Step utiliza la interfaz
DTExecUI, se puede establecer las mismas opciones que se establecieron en
DTExecUI. Antes de configurar las otras propiedades, seleccione el paquete que se
ejecutará mediante la selección de las fuentes del paquete (SQL Server, File System,
o SSIS Package Store) y luego seleccionar el paquete.
5. Después de haber configurado las opciones, haga clic en OK en la ventana New Job
Step para volver a la ventana New Job. A partir de aquí, se puede definir un
cronograma en la página de propiedades Schedules, así como establecer alertas y
notificaciones para la ejecución del paquete.
Puede programar trabajos de SQL Server Agent para ejecutarlos, a través de una
programación periódica, o provocar que se ejecuten en los eventos de otro servidor,
cuando el servicio está inactivo o cuando se inicia el servicio. La siguiente lista define sus
opciones de programación para un trabajo de SQL Server Agent:

130 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Recurring Configura la ejecución del trabajo diariamente, semanalmente o
mensualmente como lo definió en la interfaz de programación.
One Time Programa la ejecución del trabajo sólo una vez, en una fecha y hora
predefinido.
Start Automatically When SQL Server Agents Stars Configura que el trabajo se
ejecute cuando el SQL Server y los servicios de SQL Server Agent se inicien.
Start Whenever The CPUs Become Idle Basada en una inactividad predefinida,
programa un trabajo para ejecutar un paquete, en momentos de inactividad.
Puede configurar notificaciones, como el envío de mensajes de e-mail o escribir eventos
de registro, para correr cuando un paquete falla, se completa, o tiene éxito.

Figura 4-8
IMPORTANTE SQL SERVER AGENT O CUENTA PROXY
Cualquier trabajo programado en SQL Server Agent, se ejecuta bajo la cuenta, a la cual
esta conectado el SQL Server Agent. Por defecto, es Local System. (Esta cuenta está
configurada en el SQL Server Configuration Manager). Si el paquete esta configurado
para usar la autenticación Windows y no se han establecido configuraciones, el usuario
necesitará permisos para realizar cada tarea de base de datos en el paquete.
PRACTICA Ejecutar Paquetes usando DTExecUI, DTExec, y SQL Server
Agent
En estos ejercicios de práctica, va a utilizar DTExecUI para crear una sentencia de línea
de comandos que ejecute el paquete SSIS, cargado en SQL Server en la Lección 1.
Luego, ejecutará el paquete desde la línea de comandos. También se programa un
paquete para ser ejecutado con el SQL Server Agent.
EJERCICIO 1 Crear y Ejecutar una Sentencia de Linea de Comando
En este ejercicio, va a utilizar la Execute Package Utility, DTExecUI, para construir los
interruptores de los parámetros de línea de comandos, que luego serán utilizados con
DTExec para ejecutar un paquete, desde la línea de comandos.
1. En el menú Inicio, en la casilla Run, escriba DTExecUI.exe y dele Enter.
2. Con la Package Source establecido a SQL Server, escriba (local) en el cuadro
Server, y luego confirmar que la opción Use Windows Authentication está
seleccionada como la opción log on to the server.

131 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
3. Haga clic en el botón de puntos suspensivos a la derecha de la caja Package, y luego
seleccione MyPackage de la carpeta SSIS Packages. Haga clic en OK para cerrar el
cuadro de dialogo Select an SSIS Package y entrará automáticamente \MyPackage
en el cuadro Package.
4. Haga clic en la página de propiedades Reporting en el panel izquierdo y, si ha
completado la Lección 1 de este capítulo, se le pedirá que introduzca la contraseña
del paquete. Tipee EncPswd, y haga clic en OK. En la página de propiedades
Reporting, seleccione la casilla de verificación Verbose en el área Console Events.
5. Seleccione la página de propiedades Command Line en el panel izquierdo.
6. En la página de propiedades Command Line, seleccione los parámetros de línea de
comandos, haga clic derecho en el texto seleccionado y, seleccione Copy.
7. Abra una ventana Command Prompt; seleccione Inicio y luego en Run, escriba
cmd.exe y, luego dele Enter.
8. En el prompt del sistema, escriba DTExec (añadiendo un espacio al final), haga clic
derecho donde el cursor esta parpadeando, y luego seleccione Paste. Su línea de
comandos debe coincidir con lo siguiente:
dtexec.exe /SQL "\MyPackage" /SERVER "(local)" /DECRYPT /CHECKPOINTING
OFF /REPORTING V
9. Antes de ejecutar la sentencia, agregar la contraseña del paquete después de la línea
/DECRYPT. Incluya la contraseña entre comillas, y su sentencia debe tener el
siguiente aspecto:
dtexec.exe /SQL "\MyPackage" /SERVER "(local)" /DECRYPT "EncPswd"
/CHECKPOINTING OFF /REPORTING V
10. Pulse Enter para ver la ejecución del paquete de línea de comandos. Si se muestra el
cuadro de mensaje Script Task Ran, haga clic en Aceptar.
EJERCICIO 2 Ejecutar un Paquete a través del SQL Server Agent
En este segundo ejercicio, creará un trabajo SQL Agent que ejecuta un paquete SSIS. El
paquete que se usará es DimCustomer.dtsx
1. En SSMS, conectarse a la instancia local Database Engine.
2. En el Object Explorer, expanda SQL Server Agent, haga clic derecho en la carpeta
Jobs, y luego seleccione New Job.
3. En el cuadro Name, escriba Ejecucion Diaria DimCustomer y, a continuación
seleccione Steps en la lista de la página de propiedades, en el panel izquierdo.
4. Haga clic en New en la parte inferior de la página de propiedades Steps.
a. En el cuadro Step Name, escriba DimCustomer.
b. En la lista desplegable Type, seleccione SQL Server Integration Services
Package.
c. En la ficha General en la parte inferior de la ventana New Job Step, confirme que
SQL Server se define como el Package Source, y tipee (local) en el cuadro
Server.
d. Haga clic en el botón de puntos suspensivos a la derecha de la caja Package,
seleccione DimCustomer de la lista, luego haga clic en OK. (El paquete
DimCustomer fue implementado a SQL Server en los ejercicios del Capítulo 3).
e. Haga clic en OK en la ventana New Job Step.
5. Seleccione la página de propiedades Schedules, a continuación, haga clic en New
para crear un nuevo calendario.
a. En la ventana New Job Schedule, tipee Diariamente para el nombre de la
programación.

132 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
b. Deje Recurring en la lista desplegable Schedule Type, y cambie la lista
desplegable Occurs seleccionando Daily.
c. Cambie el cuadro Occurs Once At a 8:00:00 AM, y luego haga clic en OK en la
ventana New Job Schedule.
6. En la ventana New Job, haga clic en OK para completar la creación de nuevos
trabajos y ejecute el paquete a las 8:00 todas las mañanas.
7. Tenga en cuenta que en el Explorador de objetos, en SQL Agent Job, el trabajo Daily
DimCustomer Execution esta listado. Puede iniciar manualmente el trabajo dándole
clic derecho y seleccionando Start Job at Step.
Verificación Rápida
1. ¿Cuáles son las ventajas y desventajas de almacenar paquetes en SQL Server?
2. ¿Se puede programar paquetes para ejecutar a través de SQL Server Agent si tiene
el valor de EncryptSensitiveWithUserKey o EncryptAllWithUserKey seleccionado para
la propiedad ProtectionLevel?
3. ¿Si tiene un paquete para el cual una variable debería ser actualizada al inicio de la
ejecución, qué métodos tenemos disponibles?
Respuestas de Verificación Rápida
1. Cuando los paquetes son almacenados o desplegados en SQL Server, puede hacer
un backup de la base de datos del sistema MSDB. Además, cuando los paquetes
residen en SQL Server, puede asignar roles de paquetes para gestionar la seguridad.
Sin embargo, los paquetes almacenados en la base de datos MSDB requieren más
manejo que los paquetes que no se almacenan allí. Por ejemplo, para modificar los
paquetes almacenados en la base de datos, tiene que exportarlos y luego
reimportarlos a SQL Server.
2. Un paquete puede ser ejecutado a través de SQL Server Agent, con la clave de
usuario de cifrado sólo si el paquete se ejecuta en el servidor, en el que fue creado y
por el usuario que lo creó. Si ProtectionLevel está establecido en
EncryptSensitiveWithUserKey y se utiliza autenticación de Windows para la conexión,
un paquete se puede ejecutar en un servidor diferente o por un usuario diferente, pero
una advertencia será devuelta.
3. Las variables se pueden actualizar en ejecución mediante el uso de una configuración
o usando el parámetro de línea de comandos Set Value, donde se escribe la ruta de
la propiedad como \Package.Variables[user::strUserName].Value y el valor es
pasado.
Escenario Posible: Seguridad y Programacion de Paquetes SSIS
Sus paquetes ETL SSIS se han desplegado a SQL Server, y ahora es responsabilidad
del administrador de base de datos (DBA), asegurar y programar los paquetes para su
ejecución en el servidor de producción. Una de las referencias de conexiones
compartidas de un sistema de base de datos existente requiere un nombre de usuario y
contraseña. Por lo tanto, una configuración de SQL Server se ha creado para administrar
el nombre de usuario y contraseña, y para compartirlas entre los paquetes. Su tarea es
asegurar los paquetes y el calendario para su ejecución, teniendo en cuenta los
siguientes requisitos:
1. Los paquetes contienen información de esquema relacionados a una base de datos
financiera, por lo que necesita asegurarse que los paquetes están encriptados.
También es necesario asegurarse de que la contraseña de conexión compartida en la
tabla de configuración de SQL Server es segura.
2. Los paquetes deben ser programados para ejecutarse a las 8:00 todas las mañanas
usando SQL Server Agent.

133 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Resumen del Capitulo
 El servicio SSIS ayuda en la gestión y seguridad de los paquetes SSIS desplegados
en SQL Server. Puede incluir este servicio en una instalación de clúster de Windows,
según sea necesario.
 Al importar o implementar paquetes en SQL Server, puede asegurarlos mediante el
uso de los roles MSDB.
 Mediante el uso de la configuración de paquete ProtectionLevel, puede cifrar los
paquetes con una contraseña o una cuenta de usuario y servidor. Puede cifrar el
paquete completo o sólo la información sensible en el paquete.
 Además de proporcionar capacidades de implementación de paquete, DTUtil también
puede establecer la configuración de cifrado y firmas digitales de los paquetes a
través de scripts de línea de comandos.
 La utilidad de línea de comandos DTExecUI proporciona una interfaz de usuario que
construye comandos de ejecución de línea de comandos.
 La utilidad de línea de comandos El DTExec puede hacer referencia y ejecutar un
paquete, dándole varios parámetros para el control de la ejecución, como el cambio
de conexiones, configuración de las opciones de registro, y la aplicación de los
archivos de configuración.
 Los Paquetes se pueden cargar en SQL Server y ser ejecutados en SSMS
conectándolos al servicio SSIS.
 SQL Server Agent ofrece la posibilidad de programar paquetes para su ejecución.

134 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.