Archivo de la etiqueta: sql server

09 Manual SSIS – Gestión de errores y depuración en SSIS I

Tarde o temprano tendremos que echar mano de las opciones de depuración y gestión de errores que nos proporciona SSIS. Normalmente todo es mucho más sencillo cuando no hay problemas, pero en caso de errores conocer el funcionamiento de estas herramientas nos hará la vida un poco más fácil.

Podemos agrupar estas herramientas como:

  1. Gestión del control de flujo en los DataFlows.
  2. Visualización de «los datos» en un punto determinado de nuestro DataFlow.
  3. Uso de «Event Handlers» de SSIS.
  4. Seguimiento y adicción de logs o trazas de las ejecuciones de un determinado SSIS.

En este post, veremos el primer caso.

Gestión del control de flujo en los DataFlows

Cualquier componente de SSIS que colocamos en nuestros SSIS tiene al menos dos «caminos» posibles durante su ejecución: correcta e incorrecta. SSIS representa esto mediante dos «flechas» que nos servirán de conectores para el siguiente paso del SSIS.

DataFlow Paths

Por ejemplo en este caso mientras que la lectura de los datos en «Ole DB Source» sea correcta, se ejecutará la transformación Sort. En caso contrario el SSIS fallará y no realizará nada.

Esto se puede cambiar si por ejemplo, añadimos un componente «Flat File Destination» y arrastramos la «flecha roja» sobre este nuevo elemento.

Configure error Path

Al conectar estos dos elementos nos aparece una pantalla de propiedades donde se podrá configurar qué queremos que haga SSIS en caso de producirse un error en este punto.

Configure Error Output

SSIS a nivel de cada campo contempla las posibilidades de «Error» y de «Truncation» y en este cuadro de diálogo le diremos qué debe hacer:

  • Fail component: es decir, que pare la ejecución.
  • Ignore failure: que omita el fallo y prosiga con la ejecución del SSIS:
  • Redirect Row: que redirija la fila al destino que le indicamos (en este caso, un fichero de texto).

Para nuestro caso seleccionaremos en todos los campos la opción «Redirect row» para que en caso una fila tenga en un campo un valor erróneo o que se produzca un truncamiento de datos, nos guarde ese fila o registro en un fichero de texto.

Ahora sólo nos falta especificar el formato del fichero de logs. Para hacemos doble clic sobre el componente «Flat File Destination».

Flat file configuration Manager

Haremos clic en «New»

Flat File Format

Indicaremos el formato del fichero de texto (en nuestro caso «Delimitied»).

A continuación seleccionaremos la ruta de destino, la codificación, así como los campos que queremos que tenga el fichero. Para ello nos moveremos por cada una de las opciones disponibles.

Flat File Connection Manager Editor

Una vez finalizado, aceptaremos y revisaremos en «Mappings» que la asignación de los campos sea correcta en el momento que se guarde una determinada fila en el fichero. Además en caso de que no queramos guardar un determinado campo en el fichero podemos ignorarlo.

Flat File Mappings

Con esto ya hemos finalizado. Espero que os sea de utilidad!

08 Manual SSIS – Transformación Sort

Usaremos la transformación «Sort»  para realizar la ordenación de los registros leídos en un DataFlow por uno o varios campos de forma simultánea. Además este componente nos da una serie de opciones para realizar una ordenación muy específica que puede resultar muy útil en determinados casos.

Veamos su funcionamiento con un ejemplo muy sencillo. Para ello crearemos un nuevo proyecto, añadimos un nuevo DataFlow con dos elementos: un componente «Ole DB Source» y una transformación «Sort». Conectamos el origen de datos con nuestro componente «Sort» con el conector verde (es decir, en caso de que nuestra lectura de datos haya finalizado correctamente).

Transformacion Sort

Para configurar la transformación «Sort» debemos hacer doble clic sobre la misma. Esto nos abrirá la pantalla de propiedad de la misma.

Transformation Sort Properties

En la parte superior donde se muestra el listado de campos debemos seleccionar todos los necesarios para realizar la ordenación deseada. En la parte inferior podremos especificar cómo queremos que sea la ordenación de datos.

  • Input Column: es el nombre de entrada de la columna.
  • Output Alias: es el nombre de la columna tras la ordenación.
  • Sort Type: el tipo de ordenación (ascendente o descendente).
  • Sort Order: el orden del campo dentro de la ordenación (primero por, después por, etc.).
  • Comparison Flags: con el que podemos indicar modificadores para personalizar un poco más la ordenación de los datos.

Además disponemos de la opción «Remove rows with duplicate sort values» que eliminará filas con valores duplicados en el momento de realizar la ordenación.

Transformation Sort

Espero que haya quedado claro todo!

07 Manual SSIS – Publicación de paquetes SSIS

De cara al despliegue de nuestros paquetes SSIS en un entorno de producción normalmente realizaremos su publicación desde Visual Studio. El proceso de publicación es realmente sencillo.

Simplemente con nuestro paquete abierto iremos al menú «File» de Visual Studio y seleccionaremos la opción «Save a copy of…».

Save a copy of

En nuestro caso seleccionaremos la opción SQL Server en «Package Location» indicando el nuestro de nuestro servidor SQL Server.

En la opción «Package Path» seleccionaremos la carpeta de destino en nuestro servidor. Si deseamos crear una nueva carpeta para organizar mejor nuestros paquetes no tendremos más remedio que conectarnos a nuestro servidor SSIS con SQL Server Management Studio.

SSIS Server

Una vez creada la seleccionaremos desde Visual Studio especificando el nombre del SSIS en el entorno de producción.

SSIS destination Folder

Por último en «Protection Level» podremos configurar cómo queremos cifrar nuestras cadenas de conexión en caso de que contengan información sensible.  Podéis acceder a la documentación completa de estas posibilidades en MSDN.

05 Manual SSIS – Ejecutar consultas SQL

En algunas ocasiones necesitaremos ejecutar alguna consulta SQL dentro de nuestro paquete SSIS. Para realizar esta tarea BIDS pone a nuestra disposición el componente «Execute SQL Task».

Este componente podremos utilizarlo dentro de la pestaña «Control Flow» donde se define el flujo general de nuestra ETL.

Execute SQL Task

Una vez añadido este componente hacemos doble clic sobre él y podremos asignarle valores a sus propiedades. Las dos propiedades más básicas son la conexión y la sentencia a ejecutar.

Si no tenemos creada ninguna conexión, podremos añadirla en la sección «Connection Managers» pulsando con el botón derecho en un área vacía.

Connection Managers

Una vez creada, daremos valor a las propiedades «Connection» y «SQL  Statement».

Execute SQL Task 2

Este componente nos dará mucho más juego pudiendo realizar sentencias SQL dinámicas mediante el uso de variables dentro de los paquetes SSIS, pero para ello le dedicaremos un post completo porque da mucho para hablar.