Integration Services 2005 – Foreach Loop container – SMO

Utilzaremos el foreach Loop container, el cual soporta 7 enumeradores

 

Foreach FileEnumerator

Foreach Item Enumerator

Foreach Ado Enumerator

Foreach Ado.Net Enumerator

Foreach From Variable Enumerator

Foreach SMO Enumerator

 

En esta oportunidad será el Foreach SMO Enumerator ( ya sabemos que SMO viene de SQL Server Management Objects ), este package ilustra la forma de enumerar las tablas del usuario en la Base de Datos. En primer lugar, una tarea Script recupera los nombres de tabla y esquema y los coloca en dos variables. A continuación, una tarea Ejecutar SQL ejecuta un comando DBCC CHECKCONSTRAINTS usando las dos variables, asi que comenzamos creando las 3 variables siguientes  en el alcance del Package, aunque también podría ser al scope del Container

 

SchemaName de tipo String  (Contendrá el esquema de las Tablas)

Table de tipo Object  (variable usada en el Foreach Loop container)

TableName de tipo String (Contendrá el nombre de las tablas)

 

Estando en el area del Control Flow,  arrastramos el Foreach Loop Container  y luego Editamos sus propiedades, estando en  la ventana Foreach Loop Editor,  vamos a la Seccion o pestaña Collection en la propiedad enumerator, seleccionamos de la lista desplegable Foreach SMO Enumerator,  entonces tendremos que configurar cual es el connection manager q utilizará(nuestro connection manager debe apuntar a la Bd AdventureWorks en el Servidor  de BD; sin no existe una, creamos un nuevo Connection Manager,   tambien en donde dice Enumerate: clickeamos en Browse … , y aparecera la sgte ventana:

 

SSIS_FLC_01
 

Como se ve en la imagen, seleccionamos Tables dentro del nodo de AdventureWorks, entonces OK

 

SSI_FLC_02

 

Luego en la Sección de Variable Mappings , añadimos la variable Table que creamos.

SSI_FLC_03

 

Dentro del  Foreach Loop Container , añadimos 2 tareas, el primero será el Script Task ( Que será el Precedence executable), y luego el segundo será el  Execute SQL Task (Será el Constrained executable, claramente)

 

El valor del constraint será Success.

 

Editamos las propiedades del Script Task, en el Script Task Editor, vamos a la sección Script y asignamos nuestra variable Table a la propiedad ReadOnlyVariables, pues leeremos el valor que tendrá esta variable en cada iteración de nuestro Foreach Loop Container,  si pensaron hasta aquí que las otras variables fueron creadas por gusto, porque hasta el momento solo hemos utlizado la variableTABLE, pues no, las otras variables que creamos ahora entran en acción, las asignaremos en la propiedad ReadWriteVariables. Ellos estarán separados por comas.

 

SSIS_ScriptTask_01

 

Bueno esta versión de SSIS lastimosamente no trae para codificar con C#.Net, así que ni modo pues, usaremos obligatoriamente al primito llamado Visual Basic.NET.

Entonces clickeamos en Design Script…

 

Estando en el Environment de Microsoft Visual Studio for Applications

 

Importaremos dos Namespace más aparte de los que ya están como el Microsoft.SqlServer.Dts.Runtime, System.Math,… y ellos son:

 

Microsoft.SqlServer.Management.Common

Y Microsoft.SqlServer.Management.Smo

 

Luego en el método público Main, codificamos las siguientes líneas:

 

    Dim table As Table

        Dim SchemaName As String

        Dim TableName As String

 

        ‘Pasamos a nuestra variable local table el valor de la variable Table que creamos ya sea al scope del Package o del Container

        ‘ y que asu vez has sido mapeada como variable del contenedor y lo asignamos en la propiedad ReadOnlyVariables

        table = CType(Dts.Variables("Table").Value, Table)

 

        ‘Obteniendo valores en las variables locales

        SchemaName = table.Schema

        TableName = table.Name

 

        ‘Pasamos los valores obtenidos en las variables locales y la pasmos a las variables que creamos en el scope elegido

        ‘ y que fueron asignados en la propiedad ReadWriteVariables

        Dts.Variables("SchemaName").Value = SchemaName

        Dts.Variables("TableName").Value = TableName

 

Guardamos esto y nos vamos a la siguiente Tarea, que es el Execute SQL Task, editamos sus propiedades, estando en Execute SQL task editor, en la sección General, en la parte de SQL Statement, configuramos el Tipo de Conexión, la conexión, la sentencia SQL que irá, así que en la Propiedad  ConnectionType seleccionamos de la lista desplegable ADO.NET, en la propiedad Connection, seleccionamos el connection manager que creamos anteriormente, la propiedad SQLSourceType la dejamos en Direct input, y en la propiedad SQLStatement, ponemos las siguiente sentencia Transact- SQL:

 

DBCC CHECKCONSTRAINTS(‘[].[]’) WITH ALL_CONSTRAINTS, ALL_ERRORMSGS;

 

SSIS_SQLTask_01

 

Los que manejamos Transact-SQL sabemos que el DBCC CHECKCONSTRAINTS comprueba o checkea la integridad de una restricción o de todas las restricciones de una tabla determinada.

 

Luego que ejecuten el package,  debe aparecer como la siguiente Imagen: (Si Sale en vez de color verde, Rojo, es porque no fue exitoso, sino que falló, bueno yo estuve haciendo debugging por eso aparece el breakpoint en el Script Task)

 

SSIS_execute_package

 

Requisitos:

 

Asegúrese que los archivos siguientes estén instalados en la GAC (Global Assembly Cache)

 

Microsoft.SqlServer.Smo.dll

Microsoft.SqlServer.SmoEnum.dll

Microsoft.SqlServer.ConnectionInfo.dll

 

Naturalmente debes tener instalado la  Base de datos de ejemplo de Microsoft AdventureWorks y tener permisos  de administración sobre ella.

 

God Bless You!!

Jonnathan De La Barra Bustinza Open-mouthed

About justindeveloper

I am MCP (Microsoft Certified Professional). MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer), also I am SAP Business One Certified!! Desarrollando desde el IDE de Visual Studio NET 2003 hasta ahora con el Visual Studio NET 2010. Desde Microsoft SQL Server 2000 hasta ahora con el Microsoft SQL Server 2008 R2 y tambien con SharePoint, desde WSS 3.0 y MOSS 2007 y ahora familirizandome con el Sharepoint Foundation 2010 & Sharepoint Server 2010. The software development will follow being every time more wonderful!
This entry was posted in Business Intelligence. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s