Execute SQL Statements in a Loop (ejemplo de paquete)

El paquete de ejemplo Execute SQL Statements in a Loop usa un contenedor de bucle Foreach para establecer iteraciones a través de instrucciones SQL que se guardan en archivos de texto en una carpeta. Las instrucciones Transact-SQL crean cinco tablas en la base de datos AdventureWorks, una tabla para cada uno de los territorios válidos de ventas de Estados Unidos. El valor de colección del enumerador Foreach se asigna a una variable. Esta variable se usa en una expresión de propiedad para actualizar el valor de la cadena de conexiones en el administrador de conexión de archivos con cada enumeración.

Los datos del archivo de texto presentan varios problemas: algunos códigos postales se han interpretado incorrectamente como valores numéricos y, por lo tanto, no tienen ceros a la izquierda; además, los identificadores de algunos territorios de ventas no son válidos. El flujo de datos del paquete detecta y corrige códigos postales incorrectos, escribe las filas de datos que tienen un territorio de ventas no válido en un archivo y dirige las filas de datos válidas a una de las cinco tablas de la base de datos AdventureWorks.

Cuando se vuelve a ejecutar el paquete, las tablas se truncan antes de que se inserten los datos.

Si ejecuta el ejemplo en una versión de Windows que no sea en inglés, es posible que tenga que sustituir el nombre de la carpeta Archivos de programa por el nombre traducido para abrir o ejecutar el ejemplo.

ms160815.note(es-es,SQL.90).gifImportante:
Los ejemplos se proporcionan exclusivamente con fines formativos. No se han diseñado para utilizarse en un entorno de producción y no se han probado en ningún entorno de este tipo. Microsoft no ofrece soporte técnico para estos ejemplos.

Requisitos

Antes de ejecutar este paquete de ejemplo, asegúrese de cumplir las condiciones siguientes:

  • El paquete de ejemplo y los archivos de datos que usa deben instalarse en la unidad local de disco duro.
  • Debe haber instalado y tener permisos administrativos para la base de datos AdventureWorks.
  • Si tiene la intención de ejecutar el paquete de ejemplo sólo desde la línea de comandos, debe instalar SQL Server 2005 Integration Services (SSIS).
  • Si tiene la intención de abrir el paquete en el Diseñador SSIS y ejecutar el paquete de ejemplo, debe instalar Business Intelligence Development Studio.

Para obtener más información acerca de la instalación de los ejemplos, vea el tema relativo a la instalación de paquetes de ejemplo de Integration Services en los Libros en pantalla de SQL Server 2005. Para obtener la última versión de los ejemplos, incluidos aquéllos comercializados tras la versión comercial original de SQL Server 2005, vea el artículo acerca de ejemplos y bases de datos de ejemplo de SQL Server 2005 publicado en abril de 2006.

Ubicación del paquete de ejemplo

Si los ejemplos se instalaron en la ubicación de instalación predeterminada, el paquete del ejemplo Execute SQL Statements in a Loop se encuentra en la siguiente carpeta:

C:\Archivos de programa\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\

Se necesitan los siguientes archivos para ejecutar este paquete de ejemplo.

Archivo Descripción

ExecuteSQLStatementsInLoop.dtsx

Archivo del paquete.

Customer.txt

Archivo de datos de origen.

CustomersWithInvalidTerritoryID.txt

Archivo en el que se escriben datos que no son válidos.

CreateProspectTableTerr1.sql

Instrucción Transact-SQL que crea la tabla Territory1.

CreateProspectTableTerr2.sql

Instrucción Transact-SQL que crea la tabla Territory2.

CreateProspectTableTerr3.sql

Instrucción Transact-SQL que crea la tabla Territory3.

CreateProspectTableTerr4.sql

Instrucción Transact-SQL que crea la tabla Territory4.

CreateProspectTableTerr5.sql

Instrucción Transact-SQL que crea la tabla Territory5.

Ejecutar el ejemplo

El paquete se puede ejecutar desde la línea de comandos mediante la utilidad dtexec, o bien se puede ejecutar en Business Intelligence Development Studio.

Si está utilizando una versión de Windows que no sea en inglés, es posible que tenga que actualizar la propiedad ConnectionString de los administradores de conexión de archivos utilizados en el paquete para poder ejecutar el paquete correctamente. Debe comprobar que la ruta de acceso utilizada en el administrador de conexión es válida en el equipo y, si fuera necesario, modificarla para utilizar el nombre traducido de la carpeta Archivos de programa.

Para este ejemplo, es posible que tenga que actualizar "Archivos de programa" en la propiedad ConnectionString de los administradores de conexión CreateTableSQL, Customers y CustomersWithInvalidTerritoryID.

Para ejecutar el paquete mediante dtexec

  1. Abra una ventana de símbolo del sistema.

  2. Use el comando para Cambiar el directorio, cd, para cambiar al directorio C:\Archivos de programa\Microsoft SQL Server\90\DTS\Binn, donde se encuentra dtexec.

  3. Escriba el siguiente comando:

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
    
  4. Presione ENTRAR.

Para obtener más información acerca de la ejecución del paquete mediante la utilidad dtexec, vea el tema que trata sobre la utilidad dtexec en los Libros en pantalla de SQL Server 2005.

Para ejecutar el paquete en Business Intelligence Development Studio

  1. Abra Business Intelligence Development Studio.

  2. En el menú Archivo, seleccione Abrir y haga clic en Proyecto o Solución.

  3. Busque la carpeta de ejemplo ExecuteSQLStatementsInLoop y luego haga doble clic en el archivo denominado ExecuteSQLStatementsInLoop.sln.

  4. En el Explorador de soluciones, haga clic con el botón secundario en ExecuteSQLStatementsInLoop.dtsx en la carpeta SSIS Packages y, a continuación, haga clic en Ejecutar paquete.

ms160815.note(es-es,SQL.90).gifImportante:
Si abre el paquete de ejemplo Execute SQL Statements in a Loop en el Diseñador SSIS antes de ejecutar el paquete por primera vez, la tarea Flujo de datos incluye una advertencia. La advertencia se produce porque las tablas de SQL Server que utiliza el paquete todavía no existen. Las tablas se crean la primera vez que se ejecuta el paquete. La advertencia no aparece al volver a abrir el paquete en el Diseñador de SSIS si ya se ha ejecutado por lo menos una vez. El paquete se ejecuta correctamente a pesar de la advertencia.

Componentes del ejemplo

En la tabla siguiente se enumeran las tareas, los contenedores, los orígenes, las transformaciones, los destinos y los administradores de conexión de Integration Services que se utilizan en el ejemplo.

Elemento Finalidad

Bucle Foreach

El contenedor de bucles Foreach, Run SQL Statements, utiliza el enumerador Foreach File para repetir los archivos que contienen instrucciones Transact-SQL. El contenedor de bucles Foreach incluye una tarea de ejecución de SQL.

Tarea Ejecutar SQL

La tarea de ejecución de SQL Create tables se conecta con la base de datos AdventureWorks y ejecuta cinco instrucciones Transact-SQL que crean tablas.

Tarea Flujo de datos

La tarea Flujo de datos, Extract-Clean-Load Data, ejecuta un flujo de datos que extrae los datos de un archivo de texto, los limpia y distribuye y, a continuación, los carga en tablas de la base de datos AdventureWorks.

Origen de archivo plano

El origen de archivo plano Extract data extrae los datos del archivo de texto.

Transformación División condicional

La transformación División condicional Direct Rows by TerritoryID dirige las filas a diferentes salidas según el valor de la columna TerritoryID. Las filas con valores que no son válidos en TerritoryID se dirigen a la salida predeterminada.

Transformación Columna derivada

La transformación Columna derivada Fix Postal Code limpia los códigos postales agregando un cero a la izquierda a los códigos postales de cuatro caracteres.

Destino de OLE DB

Cinco destinos de OLE DB cargan datos en cinco tablas de territorios diferentes.

Administrador de conexión de archivos

El administrador de conexión de archivos, Create Tables SQL, se conecta a los archivos que contienen instrucciones SQL CREATE TABLE.

Administradores de conexión de archivos planos

El administrador de conexión de archivos Customers se conecta al archivo de texto que contiene los datos de origen del cliente.

El administrador de conexión de archivos CustomsWithInvalidTerritoryId se conecta al archivo de texto en el que el paquete escribe los datos que no son válidos.

Administrador de conexión OLE DB

El administrador de conexión OLE DB (local).AdventureWorks se conecta a la base de datos AdventureWorks en el servidor local.

Resultados del ejemplo

Para ver los resultados de la ejecución del paquete de ejemplo Execute SQL Statements in a Loop, abra una ventana de consulta en SQL Server Management Studio, escriba o copie la siguiente consulta Transact-SQL y ejecute la consulta.

SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5

Esta consulta recupera los datos que se extrajeron del archivo de texto y se cargaron en tablas de SQL Server.