SSIS

From FdIwiki ELP
Jump to: navigation, search

Introducción

SQL server integration services (ssis) es una herramienta de microsoft SQL server que sirve como reemplazo de DTS (Data Transformation Services). Su principal utilidad es la realización de tareas tipo ETL (Extract Transformation Load),es decir, la migración de datos. Se distribuye con las ediciones de SQL Server standard, Business Intelligence y enterprise desde 2005.

Caracteristicas

SSIS usa el entorno Busines Intelligence Development Studio (BIDS), basado en Visual Studios. Puede crear paquetes con flujo de trabajos y tareas complejas, muchas de ellas predefinidas. Para ello utiliza una interfaz de "drag and drop" muy cómoda y fácil de usar.

A parte también soporta el uso de variables y parámetros, muchos tipos de conexiones distintas, casi todas ellas de Microsoft, aunque también pude utilizar otro tipo de conexiones como conexiones de Oracle siempre y cuando se instalen los drivers pertinentes.

Puedes controlar diferentes eventos así como excepciones y posee un control completo sobre las transacciones.

Transacciones

Los paquetes en SSIS utilizan transacciones para poder mantener la integridad de los datos en todo momento. Todos los componentes del paquete se pueden configurar para que utilicen transacciones. Existen tres opciones para configurar transaciones:

Required: indica que el contenedor inicia una transacción, a menos que el contenedor principal ya haya iniciado otra. Si ya existe una transacción, el contenedor la combina.

Supported: indica que el contenedor no inicia una transacción, pero sí combina cualquier transacción iniciada por el contenedor principal.

NotSupported: indica que el contenedor no inicia una transacción ni combina una transacción existente. Una transacción iniciada por un contenedor principal no afecta a los contenedores secundarios configurados de manera que no admitan transacciones.


Tareas

Una tarea es una unidad de trabajo que hace una accion. Algunas de las mas importantes son:

Data Flow Task: Esta tarea es la principal para extraer, transformar y cargar. Contiene otras tareas como la de cargar datos desde el destino o desde el origen, así como numerosas tareas de transformación como la de cambiar el tipo de datos de una columna.

Execute SQL Task: Esta tarea sirve para ejecutar una sentencia SQL en el servidor de base de datos especificados.

Script Task: Los ssis soportan dos lenguajes de programación, C# y vb. Mediante esta tarea puedes crear script es uno de esos dos lenguajes para después ejecutarlos.

Send Mail Task: Con esta tarea podremos enviar un correo especificando un servidor SMTP.

Bulk Insert Task: Nos permite realizar una inserción tipo bulk que es mucho más rápida para volumenes grandes de datos.

File System Task: Sirve para realizar acciones con directorios y archivos como copiar, eliminar o mover estos.


Contenedores

Otra de las herramientas de las que dispone son los contenedores. Estos nos permiten realizar un flujo de trabajo que seguirá el SSIS cuando se ejecute.

For Loop Container: Este contenedor nos sirve a modo de bucle for. Especificamos un indice y una condición que hara que se ejecute el contenedor n veces.

Foreach Loop Container: Lo mismo que el anterior pero siendo este un bucle foreach el cual le introduces una lista de objetos para que recorra.

Sequence Container: Es el contenedor básico, ejecutara de forma secuencial todo lo que tenga en su interior.

Ejecución

Los paquetes SSIS se guardan en un archivo tipo dtsx,A partir de SQL Server 2012 estos dtsx los puedes guardar en un catalogo de SSIS. Estos archivos los puedes ejecutar de varias formas. Las más usadas son:

Mediante un Job: Puedes crear un Job en el management de SQL Server que ejecutara un dtsx desde un directorio o desde el catalogo de SSIS en una fecha y hora que tu le especifiques.

Mediante un Store Procedure: Desde SQL Server 2012 existen procedimientos que puedes invocar para ejecutar un dtsx que se encuentre en el catalogo de SSIS.

Mediante linea de comandos: Gracias a la instrución dtexec podemos ejecutar un dtsx desde linea de comandos.