Manual-Libro Sobre SSIS PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Contenido

Consejos sobre el SSIS que se cuelga y tiene bajo rendimiento .................................................. 1


Paso de parámetros vía linea de comandos en SSIS ................................................................... 2
Importación y exportación de datos usando Integration Services .............................................. 5
Tutorial de utilización de Loops en Integration Services. ........................................................... 6

Consejos sobre el SSIS que se cuelga y tiene bajo rendimiento

Cuando doy clases, conferencias, demostraciones de SQL Server Integration Services, los
espectadores se emocionan mucho de la potencia que tienen estas herramientas visuales. Sin
embargo, no siempre es tan fácil como en la demostración el uso.

Varios de mis alumnos se han quejado que la herramienta se cuelga muy seguido, que no es
muy estable y que con cien mil datos o más, comienza a colgarse.

Gente experimentada piensa lo mismo. Muchos lo consideran como una herramienta de


juguete donde las más potentes herramientas fallan a la hora crítica.

Conozco a importantes DBAs que hacen la construcción de sus dimensiones de Analysis


Services en Transaction SQL. Dicen que si bien no es tan visual y automatizado, es mucho
más potente, estable y seguro.

Entre algunos consejos que puedo dar para mejorar el rendimiento y estabilidad he encontrado
lo siguiente:
SSIS necesita una buena cantidad de Memoria RAM. Mínimo 2 GB para que sea estable. Esas
máquinas virtuales de 1 GB se cuelgan frecuentemente. No vale la pena usarlas ni siquiera en
proyectos pequeños.

Utilizar los últimos Service Pack de SQL Server.

El DataFlow es la sección más delicada e inestable, en especial los componentes de script y


las herramientas de transformación realizados fila por fila. Lamentablemente estas
herramientas son muy potentes y da gusto usarlas, pero con millones de datos, directamente
no logran funcionar o tardan demasiado. En varios casos, usar T-SQL dentro de las tareas
sigue siendo la mejor opción.

Trate de usar las tareas cache, lookpus.

Trate de filtrar los datos a los estrictamente necesarios.

En los siguientes links existen consejos para mantener en buen estado los SSISs siguiendo las
buenas prácticas:

http://www.mssqltips.com/sqlservertip/1840/sql-server-integration-services-ssis-best-practices/
http://sqlcat.com/sqlcat/b/top10lists/archive/2008/10/01/top-10-sql-server-integration-services-
best-practices.aspx

http://blogs.msdn.com/b/ashvinis/archive/2005/09/27/474563.aspx

Paso de parámetros vía linea de comandos en SSIS

En SQL Server Integration Services (SSIS), mucha gente aprende, pero le cuesta llegar a
poder recibir parámetros. En este ejemplo voy a copiar datos de una tabla origen a una tabla
destino especificando el ID como parámetro. Luego voy a llamar al paquete desde el cmd (la
línea de comandos y pasarle el parámetro).

Para este ejemplo, estoy usando la base de datos adventureworks, pero usted puede adaptar
el ejemplo a cualquier tabla de cualquier base de datos.

El paquete es un simple Data Flow y dentro del Data Flow se tiene un OLE DB Source y un
OLE DB Destination:

Vamos a tener una variable con el valor del ID a especificar y la otra variable contendrá la
expresión con la sentencia..
La expresión adjuntará la consulta a un parámetro. En este caso la consulta es la siguiente:

"SELECT [BusinessEntityID] ,[NationalIDNumber]

FROM [HumanResources].[Employee]

where [BusinessEntityID]= "+ @[User::Variable1]

Donde User Variable es la otra variable que contiene el ID. Estamos mostrando el
BusinessEntityID y el NationalIDNumber de la tabla Employee cuyo BusinessEntityID es igual a
una variable.

En el source hay que utilizar, SQL command from variable para recibir variables en los
comandos. Es decir que el comando o la sentencia select permita recibir parámetros. Para eso
se usa una variable.
El resto es crear la tabla destino.

Finalmente, para ejecutar el paquete en la línea de comandos le vamos a pasar el valor de 9 al


parámetro creado. Hay que tener extremado cuidado con las mayúsculas y minúsculas. Esta
línea de comandos es extremadamente sencilla.

dtexec /F "c:\script2\Package.dtsx" /set \package.variables[Variable1].Value;9

Para bajarse automáticamente archivos de un ftp seguro

Una excelente herramienta para trabajar con sftp es el SFTP task.


Esta es una herramienta que se integra con SQL Server Integration Services (SSIS), que son
herramientas que vienen con el SQL Server.

Si por ejemplo yo tengo un software que automáticamente se actualiza en el ftp y me lo quiero


bajar todos los días a cierta hora, puedo crearme un paquete de SSIS y correrlo usando un job
de SQL. El SSIS viene con una tarea FTP, sin embargo cozyroc, una empresa dedicada a
crear tareas de SSIS creó un componente adicional denominado el SFTP que provee una
conexión más seguro de FTP. Para ver más detalles sobre el SFTP haga click ACÁ

Importación y exportación de datos usando Integration Services


Con preocupación he visto que gente que usó SQL Server por varios años no tiene idea de lo
que es SQL Server Integration Services (SSIS).

SSIS es la tecnología de Microsoft para:

Importar datos de SQL, Oracle, Excel, archivos planos, etc

Exportar datos a SQL, Oracle, Excel, archivos planos, etc

Migrar datos

Con SSIS se puede migrar inicios de sesión o logins de una instancia a otra, también se pueden
exportar datos de Oracle a Excel o viceversa. Es una herramienta muy versátil por la cantidad
de herramientas que contiene.

Para poder importar o exportar datos se usa el SQL Server Business Intelligence y se abre un
proyecto de Integration Services.

El control flow permite determinar que tareas hacer. Dentro del control flow arrastramos la
tarea de dataflow usada para importar y exportar datos.

Luego en control flow, especificamos los datos de origen (OLEDB que muestra los datos de una
tabla SQL Server) y el destino (un archivo plano txt).
Si alguien tiene más dudas sobre importación y exportación de datos, escriba a este blog.

Tutorial de utilización de Loops en Integration Services.


En esta ocasión voy a utilizar Integration Services para crear 4 bases de datos con un simple
click. Para eso voy a utilizar el Contenedor de bucles for y la tarea de ejecución de sql.

Para eso voy a utilizar un proyecto de Integration Services. Integration services se crea desde
el SQL Server Business Intelligence Development Studio. Para crear un proyecto, lo primero
que hay que hacer es ir a Archivo-Nuevo-Proyecto y escoger un proyecto de Integration
Services.

Luego, se arma un contenedor de ciclos y dentro y ejecutador de tareas de SQL. Lo que


pretendo hacer, es ejecutar 4 veces (podrían ser 1000 sin ningún esfuerzo extra) un creador de
base de datos que creará bases de datos llamados dbase0, dbase1..dbase3.

Nuestro proyecto se vería de manera similar la siguiente figura:


Luego creamos un par de variables. La variable Límite establece cuantas veces vamos a
ejecutar. En este ejemplo, serán 4 veces.

La variable Contador es un contador que se irá incrementando hasta llegar a 4. Para crear
Variables vaya al Menú y busque SSIS>Variables

La creación de variables se verían así:

Ahora, para utilizar las variables, se van a cambiar las propiedades del for loop container. Las
propiedades del for loop container debería verse parecidas a la siguiente imagen:

Luego se deben editar las propiedades de la tarea de execución de sentencias SQL, las
propiedades deben establecer una conexión a la base de datos, y lo más importante es el sql
statement:

Execute ('create database dbase'+?)

Donde ? es el contador que se creó como variable. Estamos creando ahí las bases de datos
dbase1, dbase2, dbase3, etc.

Para asignar el parámetro contador a nuestra tarea hacemos algo similar a la siguiente imagen:
Donde Nombre de parámetro es 0, que significa que el primer parámetro es contador. En este
caso solo hay un ?. Por lo que solo se usa el nombre de parámetro 0. Si hubiesen más variables
se usaría el 0, 1, 2, 3, etc.

Lo último que queda es ejecutar el package. Si todo salió bien, 4 bases de datos se deberían
haber ejecutado.

También podría gustarte