Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Figura 1-3
2. La página Seleccionar un Destino permite especificar donde serán enviados sus
datos. Se especifica el tipo de destino y, si es aplicable, el nombre del servidor y la
configuración de seguridad necesaria para acceder a los datos. Si elige Importar
Datos en SSMS para iniciar el asistente, la configuración de destino de datos se
enlazará a la base de datos que ha seleccionado antes de iniciar el asistente.
3. Si ha seleccionado un origen de base de datos relacional que permite consultas
personalizadas, en la página Especificar Copia de Tabla o Consulta, puede optar por
copiar los datos directamente desde el origen hasta el destino o especificar una
consulta. Si decide especificar una consulta, se abre una página adicional, llamada
Proporcionar una Consulta de Origen, que le permite introducir manualmente la
consulta.
4. Si el origen es una base de datos relacional y no se especifica una consulta, puede
elegir tablas y vistas de su origen en la página Seleccionar Tablas y Vistas de Origen.
Figura 1-4
En general, el Asistente de Importación y Exportación proporciona una manera rápida de
mover datos de un origen a un destino, especialmente para usarlo una sola vez, pero hay
algunas limitaciones:
Solo se puede especificar un origen y un destino en el asistente.
Precedencias avanzadas de flujo de trabajo no están disponibles en el asistente.
El asistente no comparte los origenes de datos con otros paquetes.
Es necesario evaluar si sus requerimientos de procesamiento de datos le permiten utilizar
el asistente o si es necesario desarrollar un nuevo paquete desde cero en BIDS.
Creando un Proyecto SSIS en BIDS
Aunque el Asistente de Importación y Exportación es útil para generar un paquete rápido
que mueve datos de un origen a un destino, estos paquetes son con frecuencia sólo un
punto de partida. Tarde o temprano, tendrá que desarrollar ya sea un paquete que tiene
requerimientos más complicados o crear un conjunto de paquetes coordinados. Para
estos casos, primero debe crear un nuevo proyecto SSIS en BIDS.
Nota: OBJETOS EN BIDS
Recuerde que cualquier proyecto en BIDS sólo puede contener objetos de un mismo tipo
de proyecto, tales como SSIS, SQL Server Analysis Services (SSAS), o SQL Server
Reporting Services (SSRS). Sin embargo, un proyecto puede estar asociado con
proyectos de diferentes tipos en la misma solución.
Figura 1-5
Figura 1-6
Ahora está listo para configurar y desarrollar su paquete.
Para agregar un paquete existente, así como uno creado por el Asistente de Importación
y Exportación a su proyecto, haga clic derecho en la carpeta Paquetes SSIS en el
Explorador de Soluciones, luego, clic en Agregar Paquete Existente. Este cuadro de
diálogo le permite importar paquetes de otros proyectos o importar paquetes que ya han
sido desplegados.
Figura 1-8
Los paquetes pueden estar basados en origenes de datos definidos en el proyecto SSIS,
o pueden ser conexiones independients dentro de un proyecto. En la Figura anterior, el
proyecto tiene un origen de datos denominado AdventureWorks2008, del que también se
Figura 1-9
Modificando un Origen de Datos de Proyecto
Cuando se crea una conexión de paquete de un origen de datos, esa conexión es
actualizada sólo durante el desarrollo cuando se abre el paquete y el origen de datos ha
sido cambiado. Las conexiones de paquete no se actualizan cuando se ejecutan por
separado del proyecto SSIS asociado, por ejemplo, cuando se ejecutan desde la línea de
comandos.
El primer paso para crear una conexión de paquete es elegir el tipo de conexión, como
muestra la Figura 1-9. Si selecciona una conexión basada en un origen de datos, la
conexión ya ha sido creada. Sin embargo, si opta por otro tipo de conexión, debe realizar
al menos un paso más antes de que se complete la conexión. Por ejemplo, si se conecta
a una base de datos relacional, debe seleccionar Nueva Conexión OLE DB o Nueva
Conexión ADO.NET (dependiendo del proveedor de conexión que desea utilizar para
acceder a la base de datos). Después de seleccionar el tipo de conexión, es necesario
configurar esa conexión.
Cuando se selecciona el tipo de conexión, SSIS le pide que seleccione una cadena de
conexión que se ha almacenado en el caché en la máquina que está trabajando o crear
una nueva conexión en caché. Si la cadena de conexión está almacenada en caché en el
equipo, sólo tiene que seleccionar esa conexión de la lista para añadirlo a la lista de
conexiones en el panel Administradores de Conexión en el paquete.
Si una cadena de conexión no existe en el caché, lo que necesita es crear una nueva
cadena de conexión. Por ejemplo, para definir una nueva cadena de conexión, para una
Figura 1-10
Ahora que ha terminado de crear el paquete y las conexiones de paquete, está listo para
comenzar a desarrollar los componentes del paquete. Las Conexiones son utilizadas en
varios componentes del paquete, incluidos las tareas de Flujo de Control Flow, los
adaptadores de Flujo de Datos y las transformaciones, controladores de eventos, registro
de paquetes, y configuraciones de paquetes.
PRACTICA: Creando Nuevos Paquetes, Data Sources y Conexiones
Los siguientes ejercicios lo familiarizarán con las tareas comunes de la creación de un
nuevo proyecto en BIDS y el trabajo con las data sources y conexiones.
EJERCICIO 1: Crear el Proyecto y los Paquetes
En este ejercicio, creará un nuevo proyecto SSIS y luego trabajará con un par de
paquetes SSIS mediante la adición de data sources y conexiones.
1. Iniciar SQL Server Business Intelligence Development Studio (BIDS), haciendo clic en
el botón Start y seleccione All Programs, Microsoft SQL Server 2008 R2, SQL Server
Business Intelligence Development Studio.
2. Elegir Nuevo, Proyecto del menú Archivo. (Si tiene Visual Studio 2008 instalado por
separado de BIDS, simplemente elija Nuevo Proyecto del menú Archivo). El cuadro
de diálogo Nuevo Proyecto muestra todas las plantillas instaladas para Microsoft
Visual Studio, incluyendo las plantillas Poryectos de Business Intelligence.
3. En el cuadro de diálogo Nuevo Proyecto, compruebe que Poryectos de Business
Intelligence se ha seleccionado en el área Tipos de Proyecto, y luego en el área
Plantillas, seleccione la plantilla Proyecto de Integration Services.
4. Cerca de la parte inferior del cuadro de diálogo Nuevo Proyecto, en el cuadro
Nombre, escriba Proyecto SSIS como el nombre de su proyecto SSIS.
5. En el cuadro Location, escriba la ruta, a partir de la carpeta de documentos en:
C:\SSIS\Codigo\Cap1\.
Figura 1-11
Después de agregar una tarea en el espacio de trabajo Flujo de Control, se necesita
configurar la tarea para realizar la operación específica que haya seleccionado. Para
habilitar la configuración, cada tarea tiene un editor que se puede abrir dándole doble clic
Figura 1-12
Adicionalmente, puede arrastrar objetos de tareas y otros contenedores dentro del
contenedor.
Hay tres tipos de contenedores primarios en SSIS: un contenedor de Secuencias, un
contenedor de Bucles For, y un contenedor de Bucles Foreach.
Contenedor de Secuencias. Le permite organizar las tareas subordinadas
agrupándolas, y permite aplicar las transacciones o asignar registros en el
contenedor.
Contenedor de Bucles For. Proporciona la misma funcionalidad que el contenedor
de Secuencias, excepto que también le permite ejecutar las tareas varias veces sobre
la base de una condición de evaluación, por ejemplo como un bucle de 1 a 10.
Contenedor de Bucles Foreach. También permite bucles, pero en lugar de
proporcionar una expresión de condición, se recorre un conjunto de objetos, tal como
archivos en una carpeta.
La Figura 1-13 muestra el Editor de Bucles Foreach, que se abre haciendo doble clic en
el contenedor o dándole clic derecho en el contenedor y luego clic en Editar.
Como se ha descrito, el contenedor de Bucles Foreach puede iterar diferentes tipos de
objetos, y las opciones de configuración permiten especificar los objetos sobre los que se
aplicará el lazo y la configuración detallada. Por otra parte, los valores de los objetos
enumerados se pueden poner en las variables de usuario. Por ejemplo, el contenedor de
Figura 1-13
Trabajando con Variables de Paquete
Las variables dentro de SSIS, son una manera de integrar los objetos por el envío de
valores entre las tareas y los contenedores, la aceptación de los valores de orígenes
externos, o la construcción de código de forma dinámica para que sea ejecutada.
También puede utilizar las variables para auditoría y registro.
Para trabajar con variables dentro de un paquete, elija Variables en el menú SSIS
(cuando diseñe un paquete). La Figura 1-14 muestra la ventana Variables en BIDS.
En la parte superior de la ventana Variables están los botones que le permiten crear y
borrar variables, así como ver otras variables dentro de un paquete. Como muestra la
Figura siguiente, a todas las variables SSIS se les da un nombre, un ambito, un tipo de
datos y un valor. El ámbito define a qué nivel dentro de un paquete, la variable es creada.
Por ejemplo, si selecciona un contenedor de Bucles Foreach y hace clic en el botón
Agregar Variable en la barra de herramientas de la ventana Variables, la variable está en
el ámbito de ese nivel. Cuando no hay tareas o contenedores seleccionados, la variable
está en el ámbito en el nivel de paquete completo.
Figura 1-14
TEMAS CLAVE
Las variables son visibles en una tarea o un contenedor sólo si el alcance de las variables
se encuentra en el ámbito de la tarea o contenedor en cuestión, en el ámbito de un nivel
de contenedor padre, o en el ámbito del mismo paquete. Por ejemplo, si una tarea
Figura 1-15
Usando la tarea Script y la tarea Generacion de Perfiles de Datos
Aunque este libro se centra en el desarrollo y el mantenimiento, en lugar del diseño, vale
la pena destacar algunas tareas clave de Flujo de control. El objetivo de este libro cubre
el uso de código dentro de un paquete, así como la realización de perfiles de datos, así
que vamos a mirar a la tarea Script y la tarea Generacion de Perfiles de Datos.
Tarea Script
Puede utilizar la tarea Script dentro de SSIS para ejecutar código VB.NET o C#.NET. La
tarea Script tiene las siguientes características:
Usa las herramientas de la interfaz Visual Studio para aplicaciones 2.0 (VSTA), que
permite ejecutar código VB.NET y C#.NET con la completa variedad de funciones y
métodos.
Las variables pueden ser referenciadas y actualizadas en un script.
Las conexiones pueden ser referenciadas y actualizadas en un script.
Los puntos de interrupción SSIS se pueden aplicar en el código del script (para la
tarea Script). En el Capítulo 2 se discute sobre puntos de ruptura.
Se ejecuta tanto en un entorno de 32 bits (x86) como en un entorno de 64 bits (X64).
Figura 1-16
En este ejemplo se utiliza Microsoft Visual Basic 2008 como el ScriptLanguage y se
especifica la variable User::FileName en la propiedad ReadOnlyVariables. Para el diseño
del script, en el Script Tast Editor, haga clic en Edit Script.
Para este ejemplo, el script tiene que actualizar el administrador de conexión de Excel
(Ms Excel 97-2003), para apuntar al valor de la variable, como muestra el código
siguiente:
Dts.Connections("Excel Connection Manager").ConnectionString() = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
Dts.Variables("FileName").Value.ToString() + _
";Extended Properties=""EXCEL 8.0;HDR=YES"";"
La referencia a la conexión comienza con Dts.Connections y la referencia a las variables
comienza con Dts.Variables.
Este código se ejecuta para cada bucle en el contenedor Foreach Loop y actualiza el
administrador de conexiones de Excel.
Tarea Data Profiling
Puede utilizar la tarea Data Profiling para revisar las entidades de fuente de datos, para
verificar la limpieza y la integridad de los datos, y para entender cómo los datos están
estructuralmente organizados, así como posibles columnas clave y relaciones entre
columnas.
Figura 1-17
Tabla 1-2. Características de Tareas Data Profiling
PERFIL DESCRIPCION
Evalúa la columna y devuelve el porcentaje de valores NULL en la
Perfil Column Null Ratio
columna con respecto al número total de filas de la tabla.
Para las columnas numeric y datetime, devuelve la dispersión y el
Perfil Column Statistics
promedio de los valores.
Identifica la unicidad de los valores en una columna a través de todas
Perfil Column Value Distribution
las filas de esa columna.
Muestra las longitudes de valor distintas para una columna de texto y
Perfil Column Length Distribution
el porcentaje de todas las filas que cada longitud toma.
Muestran los patrones que se encuentran en la columna de datos y
Perfil Column Pattern
devuelve el patrón de expresión regular que coincide con el patrón.
Identifica una o más columnas que son únicas a través de todas las
Perfil Candidate Key
filas, el porcentaje de la unicidad se muestra.
Lista de las columnas que tienen valor dependiente de otras columnas
Perfil Functional Dependency en la tabla, donde el valor de una columna se encuentra sólo, cuando
el valor de otra columna es distinto.
Después de configurar la tarea Data Profiling a través de la caja de dialogo Single Table
Quick Profile Form, es necesario especificar el archivo de salida XML en la propiedad
Destination. Aquí es donde, la tarea almacena los resultados de los perfiles.
Para ver los resultados, abra el Visor Data Profile (Haga clic en Start, seleccione All
Programs, Microsoft SQL Server 2008 R2, Integration Services, Data Profile Viewer).
Haga clic en Open en la barra de herramientas, y busque el archivo de salida XML, donde
se almacenan los resultados. La Figura 1-18 muestra el Data Profile Viewer.
El Data Profile Viewer muestra cada tipo de perfil. El panel izquierdo le permite navegar
entre los tipos de perfiles y tablas de origen que se perfilan. El panel derecho muestra los
resultados.
Figura 1-19
5. Antes de editar las tareas en SSIS, abrir SSMS, conectese al Database Engine, y
cree una nueva consulta en la base de datos AdventureWorksDW2008R2. Ejecute el
siguiente código (archivo SQL: CrearTabla_stgDimCustomerUpdates):
USE AdventureWorksDW2008R2
GO
CREATE TABLE [dbo].[stgDimCustomerUpdates](
[CustomerAlternateKey] [nvarchar](15) NULL,
[AddressLine1] [nvarchar](60) NULL,
[AddressLine2] [nvarchar](60) NULL,
[BirthDate] [datetime] NULL,
[CommuteDistance] [nvarchar](15) NULL,
Figura 1-20
En esta lección, se verán los detalles de los adaptadores de origen y destino, así como
de las transformaciones.
Definiendo adaptadores de origen Data Flow
Los adaptadores de origen Data Flow utilizan conexiones de paquete, que apuntan a la
instancia del servidor o ubicación del archivo de la data source. (La única excepción es el
adaptador Raw File, que no utiliza una conexión de paquetes). Un adaptador de origen
extrae datos de origen y los mueve dentro del data flow, donde será modificado y enviado
Figura 1-21
El adaptador de origen OLE DB es similar al adaptador ADO.NET, en que requiere un
administrador de conexión y tambien una tabla debe ser seleccionada o una consulta
debe ser escrita. En este ejemplo, la lista desplegable Data access mode está
configurada a Table or view, y la tabla [Sales].[SpecialOffer] esta seleccionada. Si Data
access mode estuviera configurada a SQL Command, podría entrar una consulta para el
origen.
Creación de Destinos Data Flow
Los destinos data flow son similares a los origenes en que utilizan conexiones de
paquetes. Sin embargo, los destinos son los extremos finales en un paquete, definiendo
la ubicación en la que los datos deben ser colocados. Por ejemplo, si está enviando datos
a un archivo Excel desde una tabla de base de datos, su destino será un adaptador Excel
Destination.
TEMAS CLAVE
Muchos objetos SSIS tienen una propiedad ValidateExternalMetadata que puede
establecerse a False si el objeto referenciado (como una tabla) no existe cuando el
paquete está siendo diseñado. Esta propiedad es generalmente utilizada para los
TEMAS CLAVE
Se puede configurar el adaptador de destino OLE DB para insertar datos de los data flow
a través de lotes masivos de datos, en lugar de una fila a la vez. Para utilizar esta técnica
de optimización de destino, modifique el destino OLE DB y establezca el Data access
mode a Table or view – fast load. Cuando el destino OLE DB no está configurado con
carga rápida, sólo una fila a la vez se inserta en la tabla de destino.
La Figura 1-22 muestra un data flow simple con una fuente y un destino. El flujo de datos
extrae registros de la tabla Sales.SpecialOffer de AdventureWorks2008R2 y los inserta en
la tabla DimPromotion de AdventureWorksDW2008R2.
Figura 1-22
Al igual que en el origen, el adaptador de destino requiere configuración, tanto en la
conexión como en la tabla, en la que las filas se insertan; así como en la asignación de
las columnas de flujo de datos, a las columnas de la tabla de destino. La Figura 1-23
muestra el OLE DB Destination Editor, para el ejemplo anterior.
Figura 1-24
Tenga en cuenta que no todas las columnas se asignan. Sin embargo, si una de las
columnas de destino sin asignar, se marca como NOT NULL, el destino del paquete falla
cuando se ejecuta. En la sección titulada "Usando Transformaciones" más adelante en
esta lección, verá cómo utilizar la transformación Slowly Changing Dimension para
manejar los nuevos registros y actualizaciones.
Trabajando con Transformaciones Data Flow
Las transformaciones le dan la capacidad de modificar y manipular los datos en el flujo de
datos. Una transformación realiza una operación, ya sea en una fila de datos a la vez o
en varias filas de datos a la vez.
Figura 1-25
Seleccionando transformaciones
Las Transformaciones realizan una amplia variedad de operaciones en los datos
referenciados, y la transformación que elija depende de sus necesidades de
procesamiento de datos. Algunas transformaciones operan de manera similar a otras
transformaciones, por lo tanto, podemos clasificarlos en grupos naturales de
componentes parecidos.
TRANSFORMACIONES DE LOGICA A NIVEL DE FILA
Las transformaciones más comunes y de fácil configuración realizan operaciones en las
filas sin necesidad de otras filas del origen. Estas transformaciones, que, lógicamente,
trabajan a nivel de fila, a menudo se desempeñan muy bien. La Tabla enumera las
transformaciones de lógica a nivel de fila.
Algunos de los usos comunes de estas transformaciones incluyen la realización de
cálculos matemáticos, la conversión de un valor de texto a un tipo de datos numérico o
decimal, el reemplazo de valores NULL con otros valores. Debido a que la transformación
Import Column y Export Column trabajan con tipos de datos binarios grandes, estas dos
transformaciones llevan una mayor carga de trabajo.
Tabla 1-5. Transformaciones de Lógica a Nivel de Fila
TRANSFORMACION DATA
PROPOSITO
FLOW
Agrega columnas adicionales a cada fila, en función de variables de sistema a
Audit
nivel de paquete, como ExecutionStartTime y PackageName.
Permite que datos que se usarán en una transformación Lookup estén en caché
Transformación Cache
y disponibles para múltiples componentes Lookup.
Realiza operaciones comunes de texto, tal como Uppercase, y permite
Character Map
operaciones de conversión bit, de lingüística avanzada.
Figura 1-27
La Figura 1-27, muestra el resultado de la transformación Slowly Changing Dimension.
Todas las transformaciones y los destinos resultantes fueron creados por el Slowly
Changing Dimension Wizard, que construyó el resto del flujo de datos.
La Figura 1-28, muestra la pagina Slowly Changing Dimension Columns del asistente,
que define que columnas de dimensión, deben causar que tipo de cambio a la salida. Las
opciones son Fixed Attribute, que significa que el cambio no debería ocurrir; Changing
Attribute, que significa que se produce una actualización; o Historical Attribute, que
significa que el cambio crea un nuevo registro.
5. Lo siguiente será ordenar los datos de las fuentes, con respecto a la clave del
negocio. En primer lugar, arrastre dos transformaciones Sort del cuadro de
herramientas Data Flow a la superficie de diseño Data Flow, y luego conecte la flecha
de salida del adaptador Origen Cliente a la primera transformación Sort y la de Dim
Cliente a la segunda transformación Sort, como muestra la Figura 1-30.
Figura 1-30
6. Edite la primera transformación Sort y seleccione la casilla de verificación en el lado
izquierdo de la columna CustomerAlternateKey en la Available Input Columns. Haga
clic en OK para guardar la transformación.
7. Edite la segunda transformación Sort y seleccione la casilla de verificación en el lado
izquierdo de la columna CustomerAlternateKey en la Available Input Columns. Haga
clic en OK para guardar la transformación.
8. De la Toolbox Data Flow, arrastre una transformación Merge Join a la superficie de
diseño, a continuación, conecte la flecha de salida de la primera transformación Sort
(procedente de Origen Cliente) a la transformación Merge Join. Cuando aparezca la
caja de dialogo Input Output Selection, elija Merge Join Left Input de la lista
desplegable Input y, a continuación, haga clic en OK.
9. También conecte la flecha de salida de la segunda transformación Sort (procedente
de Dim Cliente) a la transformación Merge Join.
10. Editar la transformación Merge Join para mostrar el cuadro de dialogo Merge Join
Transformation Editor.
a. Cambiar la configuración en la lista desplegable Join Type a Left Outer Join, el
cual cargara todas las filas de origen de la consulta Origen Cliente (el origen de la
izquierda de la Transformación Merge Join) y las filas coincidentes del lado
derecho (que es de la fuente dbo.DimCustomer).
b. Para retornar todas las columnas de la consulta Origen Cliente, seleccione la
casilla de verificación que está a la izquierda de la columna de cabecera Name en
la lista Sort de la izquierda. Al hacer esto seleccionará todas las casillas de
verificación de cada columna que es el resultado deseado.
c. En la lista de la derecha de columnas del Dim Cliente, seleccione sólo la casilla de
verificación junto a la columna CustomerAlternateKey.
d. Desplácese hacia abajo por la lista Output Columns a la parte inferior del cuadro
de dialogo Merge Join Transformation Editor hasta el final, y para la columna
CustomerAlternateKey, cambie el valor de Output Alias a
Dim_CustomerAlternateKey.
e. Haga clic en OK para guardar los cambios a la transformación Merge Join.
11. Desde la Toolbox Data Flow, arrastre una transformación Conditional Split a la
superficie de diseño Data Fow, y luego conecte la flecha de salida de la
transformación Merge Join a la transformación Conditional Split.
12. Edite la Transformación Conditional Split para mostrar el caja de dialogo Conditional
Split Transformation Editor.
a. Crear una nueva salida escribiendo Nuevos Registros en el cuadro Output Name
para la primera fila de la lista de salida.
Figura 1-31
18. Confirmar el correcto desarrollo de su paquete, ejecutando el paquete en BIDS.
19. Seleccione Debug, Stop Debugging del menú Debug para detener el depurador, y
a continuación, haga clic en el botón Save All en la barra de herramientas BIDS.
EJERCICIO 3: Cargando Dimensiones
En este ejercicio, aprenderá cómo usar la tarea Slowly Changing Dimension y su
asistente acompañante para cargar una nueva dimensión SpecialOffer. A continuación
se realizarán algunos cambios a los datos de origen, y verá cómo se aplican a la tabla de
dimensiones por medio de la tarea.
1. Ejecute la siguiente consulta en el Management Studio:
USE AdventureWorksDW2008R2
GO
IF(OBJECT_ID('[dbo].[DimSpecialOffer]')) IS NOT NULL
DROP TABLE [dbo].[DimSpecialOffer]
GO
CREATE TABLE [dbo].[DimSpecialOffer](
[SpecialOfferKey] [int] IDENTITY(1,1) NOT NULL
CONSTRAINT [PK_SpecialOffer_SpecialOfferKey] PRIMARY KEY
CLUSTERED ,
[SpecialOfferAlternateKey] [int] NULL,
[SpecialOfferDescription] [nvarchar](255) NULL,
[DiscountPct] [smallmoney] NULL,
[SpecialOfferType] [nvarchar](50) NULL,
[SpecialOfferCategory] [nvarchar](50) NULL,
[StartDate] [datetime] NOT NULL,
[EndDate] [datetime] NULL,
[MinQty] [int] NULL,
[MaxQty] [int] NULL,
EffectiveDate datetime NOT NULL,
ExpirationDate datetime NULL
)
2. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el proyecto llamado PLibroSSIS, a continuación, abra el paquete
DimPromotion.dtsx para su edición.
3. Asegúrese de que la ficha Control Flow este activa.
4. Haga clic derecho en Connection Manager de la ficha Control Flow y seleccione New
OLE DB Connection.
Figura 1-33
36. En la lista desplegable llamada "Start date column" seleccione EffectiveDate.
37. En la lista desplegable llamada "End date column", seleccione ExpirationDate.
38. En la lista desplegable llamada "Variable to set date values", seleccione
System::StartTime. La ventana se vera como en la Figura 1-34.
Figura 1-35
44. Ejecute la siguiente consulta en el Management Studio; para realizar cambios en los
datos de origen. Este script hará dos cambios Type 2 y un cambio Type 1:
USE AdventureWorks2008R2
GO
UPDATE Sales.SpecialOffer
SET DiscountPct = .10
WHERE SpecialOfferID = 2
UPDATE Sales.SpecialOffer
SET DiscountPct = .02
WHERE SpecialOfferID = 8
UPDATE Sales.SpecialOffer
SET Description = 'Volume Discount over 61'
WHERE SpecialOfferID = 6
45. Vuelva a ejecutar el paquete. Se dará cuenta de que una fila se envía a la ruta de
cambios de atributos y dos filas son enviadas a la ruta de históricos de atributos. El
área Data Flow se vera como en la Figura 1-36.
Figura 1-37
Figura 1-38
11. Arrastre un destino Flat File a la superficie de diseño.
12. Conecte la flecha verde del origen Excel a su nuevo destino y dele doble clic en el
destino para abrir el editor del destino.
13. Por defecto, el destino asume que está utilizando la única Flat File Connection
Manager creada en el paquete. Sin embargo, en este caso, es necesario definir un
nuevo administrador de conexión, hacemos clic en el botón New junto al Flat File
Connection Manager.
14. Hacer el archivo delimitado por comas, encontrar una ubicación para guardar el
archivo en su ordenador y hacer clic en OK.
15. A la derecha de Connection manager name, escriba ListadoFlat.
16. Dar clic en Browse al lado de File Name, y buscar la carpeta donde se ubicara el
archivo plano; C:\SSIS\LibroSSIS\CodigoPLibroSSIS\Cap 01\ListaEmpleados.txt.
17. Dar clic en la casilla de seleccion Column names in the first data row y luego dar clic
en OK.
18. Regresando al Flat File Destination Editor, ir a la página Mappings para asegurarse
que todas las columnas estén asignadas apropiadamente, como se muestra en la
Figura 1-39. Luego hacer clic en OK.
Figura 1-39
42 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
19. Ejecute este Data Flow, dando clic derecho en el diseñador y seleccionando Execute
Task. La Figura 1-40, muestra los resultados.
Figura 1-40
IMPORTANTE
Si se presenta el error mostrado en la Figura 1-41, al ejecutar el Ejercicio 4, siga los
siguientes pasos.
Figura 1-41
Entre al menú Project, dele clic en PLibroSSIS Properties; como se muestra en la Figura
1-42.
Figura 1-42
En el cuadro de dialogo PLibroSSIS Property Pages, en el panel izquierdo, seleccione
Debugging, como en la Figura 1-43. En la lista desplegable a la derecha de
Run64BitRuntime, seleccione False.
Figura 1-44
2. En la ventana de creación de base de datos, ingrese la información que se muestra
en la Figura 1-45:
Figura 1-45
3. Pulse el botón OK. Esto creará la base de datos LibroSSIS.
4. Cierre el Server Explorer.
5. El primer paso es la definición de un Data Source. En el Solution Explorer, seleccione
el nodo Data Sources, dé click derecho y seleccione New Data Source; como en la
Figura 1-46:
Figura 1-47
8. Presione el botón OK y a continuación, presione el botón Next. Aparecerá la ventana
final del asistente.
9. Presione el botón Finish para finalizar el asistente.
10. En el proyecto de Integration Services, agregue un nuevo Data Source que utilice el
proveedor Native OLE DB\Microsoft Office 12.0 Access Database Engine OLE DB
Provider. A la derecha de Server or file name, escriba la localización del archivo
Access; C:\SSIS\LibroSSIS\LibroAccess.accdb; en User name escriba admin y
Password déjelo en blanco; asegurese de que el checkbox Allow saving password
esté seleccionado. Dele clic en OK. Dele clic en Next dos veces y finalmente en
Finish; como en la Figura 1-48.
Figura 1-49
14. Arrastre una tarea Data Flow a la superfice de diseño Control Flow y renombrelo
como Extraer Clientes de Access.
15. Arrastre un origen OLE DB a la superficie de diseño Data Flow, renombrelo como
Clientes en Access y haga doble clic para abrir el OLE DB Source Editor.
16. Seleccionar LibroAccess de la lista desplegable, debajo de la etiqueta OLE DB
Connection Manager. Asimismo seleccione la tabla Clientes de la lista desplegable,
debajo de la etiqueta Name of the table or the view. Verificar las asignaciones, dando
clic en Mappings en el panel del lado izquierdo. Dar clic en OK.
17. La información de las columnas de texto en el archivo Access se encuentra
almacenada en formato internacional (UNICODE). En SQL Server, los tipos de datos
NCHAR, NVARCHAR, NVARCHAR(max) y NTEXT soportan este formato de texto.
Sin embargo, en este ejercicio la información del archivo Access será transferida a
una tabla con columnas CHAR y VARCHAR, que no soportan el formato UNICODE.
Por tanto, es necesario que los datos de Access pasen por una conversión de tipo
antes de ser copiados a SQL Server 2008 R2. La tarea Data Conversion permite
Figura 1-50
18. Haga doble clic en “Convertir a no-UNICODE” para editar las propiedades de la
conversión de datos. Se abrirá el Data Conversion Transformation Editor. Esta
ventana muestra los inputs provenientes del origen “Clientes en Access”, y permite
efectuar conversiones de datos. En el panel inferior, configure las siguientes
propiedades para convertir las columnas de texto del Access a formato normal:
Input Column Output Alias Data Type Length
NomCliente NomCliente-noUNC String[DT_STR] 50
TelCliente TelCliente-noUNC String[DT_STR] 10
19. Esto significa que, al output proveniente de “Access Clientes”, se agregan dos
columnas adicionales llamadas NomCliente-noUNC y TelCliente-noUNC, que
contienen los datos transformados a cadena normal (string). Pulse el botón OK para
finalizar la edición del Data Conversion. La ventane se parece a la Figura 1-51
Figura 1-51
20. Desde el Toolbox, en la pestaña Data Flow Destinations, agregue un nuevo OLE DB
Destination, y renómbrelo como Tabla Clientes. Conecte la salida de “Convertir a no-
UNICODE” con “Tabla Clientes. El área Data Flow, se vera como en la Figura 1-52.
Figura 1-53
23. Pulse el botón OK para confirmar los cambios.
24. En el entorno de desarrollo, en el paquete “ExtraerOffice.dtsx”, se debe regresar a la
pestaña Control Flow. En el Toolbox, seleccione el ítem Execute SQL Task, y
arrástrelo sobre la ventana de diseño, encima de la tarea Data Flow “Extraer Clientes
de Access” y renombrelo como Borrar Datos; luego arrastre la flecha verde hacia la
tarea Data Flow. La pantalla debe quedar como en la Figura 1-54:
Figura 1-55
26. A continuación, seleccione la propiedad SQLStatement, y presione el botón .
Escriba la siguiente sentencia SQL; en la ventana, similar a la Figura 1-56:
Figura 1-56
27. Pulse el botón OK para confirmar la sentencia escrita. Pulse nuevamente el botón OK
para aceptar los cambios en la tarea.
28. Grabe los cambios y ejecute el paquete. Al finalizar, efectúe una consulta sobre la
tabla “Clientes” en la base de datos LibroSSIS.
EJERCICIO 6: Limpieza de Datos con Fuzzy Lookup
Periódicamente, los vendedores remiten información en archivos de texto. Esta
información consiste en el nombre de cada cliente, y la venta correspondiente. Sin
embargo, es común que estos nombres contengan errores ortográficos y de digitación.
Adicionalmente, se tiene una tabla llamada “Clientes”, que contiene la información de los
clientes de la empresa. Este ejercicio consistirá en construir un paquete de Integration
Figura 1-58
13. Pulse el botón OK.
14. A continuación, agregue un OLE DB Destination, y establezca su nombre a “Ventas a
Clientes”. Seleccione la transformación “Corregir datos”, y conecte su flecha de salida
con el destino “Ventas a Clientes”. Al finalizar, la ventana Data Flow debe tener la
apariencia, de la Figura 1-59:
Figura 1-60
17. Guarde el paquete y ejecútelo. Consulte los registros de la tabla VentasClientes.
Verifique que la limpieza de los datos provenientes del archivo de texto “Ventas-
sucio.txt” se ha efectuado correctamente. Observe los valores de las columnas
“_Similarity”, “_Confidence” y “_Similarity_Cliente”.
Comprobación rápida
1. ¿Cómo se utiliza SSIS para importar un archivo desde un servidor FTP a una tabla
SQL Server?
2. Necesita migrar una base de datos Access creado por el usuario a SQL Server, pero
la Toolbox Data Flow no contiene un adaptador de fuente Access. ¿Cómo podría
importar estos datos a SQL Server?
Figura 2-3
Durante la ejecución del Control Flow que se muestra en la Figura 2-3, la tarea Truncate
Update Table tiene éxito, y SSIS escribe un punto de control al archivo checkpoint. Sin
embargo, la tarea Data Flow falla, por lo que no se actualiza el archivo checkpoint, y el
paquete se detiene.
En este punto, el error es corregido en la tarea Data Flow, y el paquete se vuelve a
ejecutar. La Figura 2-4 muestra el Control Flow del paquete, luego de volverse a
ejecutar. Como puede ver, este paquete falló en el paso 2 de la primera ejecución.
58 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Después de que el problema se ha solucionado, la segunda ejecución del paquete se
inicia en el paso 2 y continúa hasta el final.
Figura 2-4
Después de completar el último paso, denominado Batch Updates en la Figura 2-4, el
archivo checkpoint se ha borrado.
MEJORES PRÁCTICAS MANEJAR MÚLTIPLES TAREAS CON
TRANSACCIONES Y REINICIO
A veces será necesario retroceder una serie de tareas, si una de las tareas falla, pero se
quiere regresar sólo hasta el punto de fallo, no al principio del paquete. Para ello,
necesita habilitar checkpoints en el paquete y luego usar un contenedor Sequence que
contenga todas las tareas asociadas. El contenedor Sequence debe tener las
transacciones activadas por haber configurado TransactionOption a Required en el nivel
de contenedor.
PRACTICA: Implementando Paquetes y Transacciones de Tareas
En esta práctica, se activaran las transacciones en el nivel de contenedor y se observará
los resultados, cuando una tarea falla dentro del contenedor. También se activaran los
checkpoints para un paquete y se observará los resultados.
EJERCICIO 1: Habilitar Transacciones y Observar una Transacción Rollback
En este ejercicio, se activara una transacción para un contenedor Sequence y se
observara los resultados de los datos después de que un error ocurra en otra tarea en el
mismo contenedor.
1. En el Panel de control, seleccione Herramientas administrativas y luego Servicios,
para abrir la consola de Servicios. Si es necesario, inicie el Coordinador de
transacciones distribuidas de Microsoft (MSDTC).
2. Abra el proyecto SSIS llamado PLibroSSIS en SQL Server Business Intelligence
Development Studio (BIDS) que creó en el Capítulo 1, "Desarrollando Paquetes
SSIS", a continuación, abra el paquete llamado MyPackage.dtsx.
3. Elija Properties Window del menú View para abrir la Ventana Propiedades. Haga clic
en el botón Auto Hide, que se asemeja a una tachuela, en la ventana Propiedades
para bloquear la ventana en la posición abierta.
4. En la superficie de diseño Control Flow, seleccione el objeto contenedor Sequence
haciendo clic en él, y note las propiedades del contenedor Sequence listadas en la
ventana Propiedades.
5. Establezca la propiedad TransactionOption a Required utilizando la lista desplegable.
6. Guarde el paquete haciendo clic en el botón Save de la barra de herramientas.
7. A continuación, arrastre una nueva tarea Execute SQL de la caja de herramientas a la
parte inferior en la superficie de trabajo del contenedor Sequence, justo debajo de la
tarea Data Flow.
8. Conecte la tarea Data Flow a la nueva tarea Execute SQL, arrastrando la flecha de
salida que esta debajo de la tarea Data Flow, a la tarea Execute SQL.
9. Editar la tarea Execute SQL, haciendo doble clic en la tarea.
Figura 2-5
10. Abra SQL Server Management Studio (SSMS) y conéctese al Database Engine. Abra
una nueva consulta de la base de datos AdventureWorks2008R2.
11. Ejecute la siguiente instrucción SQL y, a continuación, observe los resultados:
SELECT COUNT (*) FROM Sales_Summary
12. Volver a la BIDS, a continuación, ejecutar el paquete SSIS que acaba de modificar, el
cual intencionalmente falla en el último paso. Antes de detener el paquete en el modo
Debug, abra la tarea Data Flow y observe que el diseñador SSIS muestra un par de
miles de filas insertadas en la tabla Sales_Summary.
13. Detenga la ejecución del paquete, y vuelva a ejecutar la consulta del paso 11. Se
debería ver el mismo número de filas.
14. Observe que aunque la tarea Data Flow se ha realizado exitosamente, los datos se
deshacen. Esto es porque el contenedor Sequence fue configurado con
TransactionOption a Required y la última tarea en el contenedor Sequence ha fallado;
por lo tanto se deshacen los datos, de la tarea Data Flow.
EJERCICIO 2 Establecer y observar los Checkpoints en un paquete
En este ejercicio, se activaran los checkpoints en el paquete DimCustomer.dtsx y se
observará cómo trabajan los checkpoints cuando se produce un error.
1. Si es necesario, inicie SQL Server Business Intelligence Development Studio (BIDS),
abra el PLibroSSIS, y luego edite el paquete DimCustomer.dtsx dándole doble clic en
el Explorador de soluciones.
2. Abra la ventana Propiedades de la ficha Control Flow y, a continuación, cambie las
siguientes propiedades a nivel de paquete:
a. Establecer CheckpointFileName a
C:\SSIS\LibroSSIS\DimCustomer_Checkpoint.xml
b. Establecer CheckpointUsage a IfExists
c. Establecer SaveCheckpoints a True
3. Seleccione las tres tareas en el Control Flow (mantenga presionada la tecla Ctrl y
haga clic en cada uno de los tareas). De esta manera, puede cambiar la propiedad
FailPackageOnFailure para todas las tareas al mismo tiempo.
Figura 2-7
Habilitar el registro en un paquete involucra los siguientes tres pasos:
Escoger el contenedor a registrar. La sección de navegación izquierda del cuadro
de dialogo Configure SSIS Logs, le permite definir para que parte del paquete desea
habilitar los registros. Por lo general, se quiere registrar un paquete completo, en cuyo
caso, deberá seleccionar la casilla de verificación para todo el paquete en la parte
Figura 2-8
Los eventos de registros más comunes seleccionados son OnError, OnPostExecute,
OnPreExecute, OnProgress y OnTaskFailed. Los eventos OnPreExecute y
OnPostExecute son capturados al inicio y al final de cada contenedor y tarea, cuando se
ejecuta el paquete y permite un método para determinar los tiempos de ejecución de
cada tarea.
Si selecciona SQL Server como proveedor de registro, los detalles de registro se
almacenan en una tabla del sistema denominada dbo.sysssislog. La Figura 2-9, muestra
el contenido de la tabla después de que un paquete es ejecutado.
Figura 2-10
Tenga en cuenta que algunas líneas de restricción son solidas, algunas son discontinuas,
y algunas tienen símbolos de función (Fx) asociados a ella. Cada uno de ellas, indica la
Figura 2-11
Propiedades Evaluation Operation
Las propiedades Evaluation operation, le permiten definir las condiciones que determinan
el éxito de la evaluación de la restricción. Hay dos indicadores primarios de evaluación:
Las Restricciones son simplemente el estado de ejecución de la tarea (finalización,
fracaso o éxito) upstream (flujo hacia arriba), que puede elegir de la lista desplegable
Value. Por ejemplo, si una tarea upstream falla y la restricción se establece a Failure,
el requisito de restricción se cumple.
Las Expresiones de las restricciones de precedencia son evaluadores avanzados
booleanos (lo que significa que se debe evaluar como True o False) que se puede
escribir en el lenguaje SSIS Expression. Las expresiones pueden incluir funciones
matemáticas y de cadena y pueden hacer referencia a variables del paquete. Cuando
la operación de evaluación permite una expresión, puede escribirla en el cuadro
Expression.
Puede especificar diferentes combinaciones de estos dos indicadores de evaluación que
trabajan juntos para determinar si la restricción de precedencia permite que una tarea
downstream (flujo hacia abajo) se ejecute. La lista desplegable Evaluation Operation
incluye cuatro opciones:
Figura 2-13
27. Doble clic en la tarea Cara para abrir el Execute SQL Task Editor. En la propiedad
Connection, ajuste el valor al Connection Manager, de la base de datos LibroSSIS.
Escriba lo siguiente en la propiedad SQLStatement para incrementar el contador en la
tabla LanzaMoneda:
Figura 2-14
Para utilizar rutas de error, tendrá que configurar la salida de error. Tiene tres opciones
para el manejo de errores, en los componentes de flujo de datos:
Configurando la salida de error a Fail Component, hace que el flujo de datos falle si se
detecta un error.
Usando la opción Ignore Failure le permitirá a la fila continuar la ruta normal de datos
verde, pero el valor resultante en el error se cambia a NULL en la salida.
Configurando la salida de error a Redirect Row envía la fila de error fuera de la ruta
de error roja, esta es la única forma de manejar errores, con componentes separados.
Estas opciones de manejo de errores se encuentran disponibles para filas completas, así
como para la operación de cada columna en la fila. Esto no significa que a una sola
columna se le redirecciona, sino que algunas columnas se pueden configurar, para
ignorar los fallos; mientras que los errores en otras columnas, causan redirecciones. La
Figura 2-15 muestra el cuadro de dialogo Configure Error Output, que se utiliza para
establecer estas propiedades. Para desplazarse a este cuadro de diálogo, puede hacer
doble clic para editar el componente y seleccionar Configure Error Output, o puedes
simplemente arrastrar la flecha de salida de la ruta de error roja al siguiente componente,
que abre el mismo cuadro de diálogo.
Figura 2-17
Después de revisar las filas, se puede optar por permitir que los datos pasen, hasta que
se completen, haciendo clic en Detach en la ventana Data Viewer, o puede mostrar el
siguiente lote de filas haciendo clic en el botón Play. Si utiliza un visor de datos en una
75 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
ruta de error, puede agregar el error y las columnas de código de error a la salida, para
identificar la columna en la fila que causó, que la fila falle en un componente.
Manejando Errores de Paquetes con los Controladores de Eventos
En el Data Flow, usar los visores de datos nos da la capacidad de depurar problemas con
facilidad, mientras se procesan los datos. El Control Flow es diferente, debido a que nos
enfocamos en el flujo de trabajo y en la ejecución, en vez de en los datos y en las
transformaciones. Aprovechando las capacidades de Visual Studio, el Control Flow
soporta la depuración visual y las características breakpoint (punto de interrupcion). En
primer lugar, veremos los controladores de eventos que ofrece SSIS y, luego
exploraremos las capacidades de depuración en el Control Flow.
SSIS ofrece la posibilidad de escuchar, para ciertos eventos de ejecución y realizar otras
operaciones, cuando un evento sucede (dependiendo del evento de ejecución). Por
ejemplo, si se produce un error, el controlador de eventos de error, puede enviar una
alerta o reparar un problema de datos. Los controladores de eventos utilizan el paradigma
de Control Flow para el procesamiento de flujo de trabajo, que incluye las mismas tareas
del Control Flow y contenedores que se encuentran en la caja de herramientas Control
Flow.
Se pueden definir cero, uno o más de un controlador de eventos para un paquete. Para
agregar un controlador de eventos a un paquete, debe hacer clic en la ficha Event
Handlers en el Diseñador SSIS. Para crear un nuevo controlador de eventos de paquete,
seleccione una tarea de la lista desplegable Executable y un evento de una lista
desplegable Event handler, como muestra la Figura 2-18.
Figura 2-18
El componente ejecutable esta en el ámbito de tarea o contenedor que activa el evento.
También puede elegir el paquete mismo (el contenedor de más alto nivel) como el
componente ejecutable para un evento. El controlador de eventos es el evento actual que
causa que el flujo de trabajo de evento se ejecute. La Tabla 2-1 describe los tipos de
controladores de eventos de paquetes.
Además, los Event Handlers asignados a un ámbito de ejecución, se propagan hacia
abajo, a los eventos hijo, cuando se activa el evento. Si un evento se asigna a un
contenedor, los archivos ejecutables hijos, incluyen las tareas y contenedores que están
incrustados, en el contenedor padre. Esto significa que si se asigna un evento OnError al
paquete y un evento OnError ocurre en una tarea, el controlador de eventos se activa
para la tarea y el paquete (y para algunos contenedores entre ellos). Puede utilizar un
controlador de eventos, para rastrear los detalles del error, para el envío de mensajes de
OnExecStatusChanged Se ejecuta para todas las tareas y contenedores, cuando cambia el estado de
ejecución a In Process, Success o Failed.
OnInformation Se ejecuta cuando hay mensajes de información de salidas SSIS, durante
validación y ejecución de una tarea o contenedor.
OnPostExecute Se ejecuta despues de que un contenedor o tarea, se ha completado con
éxito.
OnPostValidate Se ejecuta después de un contenedor o la tarea, ha sido validada con éxito.
OnPreExecute Se ejecuta justo antes que un contenedor o tarea se ejecute.
OnPreValidate Se ejecuta antes de que el componente sea validado, por el motor.
TEMAS CLAVE
Puede desactivar controladores de eventos en cualquier tarea o contenedor, establezca
la propiedad DisableEventHandlers de la tarea o contenedor a True. Así que si tiene un
controlador de eventos definido, pero no quiere que sea invocado para una tarea
específica, puede desactivar los controladores de eventos para esa única tarea.
MUNDO REAL
Una práctica común en SSIS es la creación de una plantilla de paquete SSIS, a veces
denominada plataforma de paquete, que contiene un conjunto de tareas preconfiguradas
y controladores de eventos para fines de auditoría. Entonces, cuando se empieza a crear
un nuevo paquete, se comienza con la plantilla de paquete, para que todos los paquetes
tengan el mismo registro, auditoría, configuraciones (configuraciones de SSIS se revisan
Figura 2-20
Cuando haya completado el trabajo durante una pausa y se encuentra en una tarea
Script, puede continuar la ejecución del script y el paquete al siguiente punto de
interrupción, haciendo clic en el botón Continue, en la barra de herramientas Debug o
presionando F5. Alternativamente, puede detener el paquete haciendo clic en el botón
Stop, en la barra de herramientas. Los Puntos de interrupción en una tarea Script son
Figura 2-21
14. Compruebe la propiedad ScriptLanguage. Si esta propiedad se establece en Microsoft
Visual C # 2008, cámbiela en la lista desplegable a Microsoft Visual Basic 2008.
15. A continuación, haga clic en Edit Script, para abrir el entorno de diseño, de Visual
Studio. Utilizará esta tarea Script, para generar un ProductID aleatorio. Reemplace
Sub Main con el siguiente código:
Public Sub Main()
Randomize()
Dts.Variables(“User::ProductID”).Value = CInt(Int((900 * Rnd()) + 1))
Dts.TaskResult = ScriptResults.Success
End Sub
16. Cierre el entorno de diseño Script de Visual Studio y haga clic en OK para aceptar los
cambios, en la tarea Script.
17. Agregar una tarea Execute SQL para el Simulador Consulta Inventario y nómbrelo
como Verificar Nivel Inventario.
18. Arrastre una restricción de precedencia desde Generar ProductID a Verificar Nivel
Inventario.
19. Doble clic en la tarea Verificar Nivel Inventario para abrir el Execute SQL Task Editor.
Figura 2-22
22. En el panel Parameter Mappings, configurar los parámetros como en la siguiente
tabla:
Nombre Variable Dirección Tipo de Dato Nombre Parámetro
User::ProductID Input Int32 @ProductID
User::ReorderQuantity Output Int32 @ReorderQuantity
23. Haga clic en OK para aceptar la configuración. Como se describió anteriormente,
establezca la propiedad MaximumErrorCount de la tarea Verificar Nivel Inventario a
9999, usando la ventana Properties.
24. Agregar otra tarea Execute SQL y nómbrelo como Insertar Advertencia. Esta tarea
se puede utilizar para insertar una fila en la tabla InventoryWarning, cada vez que el
inventario actual, es menor que el punto de pedido establecido, para un producto en
particular. Conecte Verificar Nivel Inventario a Insertar Advertencia.
25. Doble clic en la restricción de precedencia y establezca propiedad Evaluation
Operation a Expression and Constraint.
26. Establezca la propiedad Expression a @ReorderQuantity>0 y dejar la propiedad
Value a Success (ver Figura).
27. Haga clic en OK para aceptar los cambios, en la restricción de precedencia. La
ventana se muestra, como en la Figura 2-23.
31. Haga clic en OK para aceptar la configuración. El paquete debe parecerse a la Figura
2-24.
Figura 2-24
Cuando se ejecuta el paquete, a veces la tarea Verificar Nivel Inventario fallará. El
script Generar ProductID no siempre generará un ProductID válido. Cuando esto
sucede, el procedimiento almacenado generará un error y hará que la tarea Verificar
Nivel Inventario falle. Debido a que las propiedades FailParentOnFailure y
FailPackageOnFailure se establece a False de forma predeterminada, y la
Figura 2-25
35. Select Verificar Nivel Inventario y haga clic en OK para cerrar la lista.
36. Elija OnError en la lista Event handler, si no está por defecto. Debe hacer clic en el
enlace "Click here to create an 'OnError' event handler for executable 'Verificar Nivel
Inventario'”, para crear el nuevo controlador de eventos. La pantalla cambiará a un
área de diseño muy similar a la ficha Control Flow. Ahora puede arrastrar cualquier
tarea de nivel Control Flow o Contenedor, al área de diseño. En este caso va a
agregar una tarea Execute SQL, que agregará una fila a la tabla MissingProductID,
cada vez que la tarea Verificar Nivel Inventario falla.
37. Los controladores de eventos pueden ser tan simples o tan complejos como necesita
que sean. Toda la funcionalidad disponible en el nivel Control Flow, está disponible en
el nivel Event Handler, incluyendo la capacidad de agregar un controlador de eventos
a un controlador de eventos.
38. Arrastre una tarea Execute SQL al área de diseño Event Handler y nómbrelo como
Insertar ProductID Faltante.
Figura 3-2
En la página Select Configuration Type, escoja un tipo de configuración. La Tabla 3-1
describe los tipos de configuración que puede elegir.
Elegir la configuración más apropiada para su entorno y requerimientos del proyecto.
Asegúrese de tener en cuenta cómo los paquetes serán soportados en un entorno de
producción y cómo otras tecnologías son compatibles y configuradas. Si las
configuraciones incluyen información de la cadena de conexión, asegúrese de evaluar los
requisitos de seguridad y requerimientos de la industria, que necesita cumplir.
Los tipos de configuración más usados son XML Configuration File y SQL Server. Demos
un vistazo más de cerca a cada uno de estos tipos.
Tabla 3-1: Tipos de Configuración
TIPO DESCRIPCION
XML Configuration File Almacena los ajustes de configuración en un archivo XML, en el sistema de
Figura 3-3
Si lo prefiere, puede utilizar una variable de entorno, que contiene la ubicación del
archivo de configuración. Para utilizar este método, es necesario crear una variable
de entorno del sistema, en las propiedades de sistema de su computadora. El valor
de la variable de entorno debe contener la ruta completa, el nombre y la extensión del
archivo.
TEMAS CLAVE
Figura 3-4
Asegúrese de hacer clic en el botón Nueva, en la sección Variables del Sistema, para que
la variable de entorno este disponible para todas las aplicaciones. El valor de la variable
de entorno debe contener la ruta completa, incluyendo el nombre y la extensión del
archivo de configuración SSIS. Por último, asegúrese de cerrar y reiniciar BIDS para que
pueda ver la nueva configuración creada.
Así como en todos los tipos de configuración, más de un paquete puede utilizar el mismo
XML Configuration File. Así que si tiene varios paquetes que tienen propiedades
comunes, tales como cadenas de configuración, es posible que desee que todos ellos,
utilicen un archivo XML para las configuraciones.
A continuación, es necesario definir la configuración del servidor y las propiedades que el
XML Configuration File debe contener. Debido a que son comunes entre todos los tipos
de configuración, vamos a revisar la configuración SQL Configuration antes de describir
la configuración del servidor y la definición de la propiedad.
Creación de una configuración SQL Server
Si decide guardar sus configuraciones de paquete en una tabla SQL Server, seleccione
SQL Server de la lista desplegable Configuration Type en el Package Configuration
Wizard. Usar SQL Server como el mecanismo de almacenamiento de configuraciones,
requiere un grupo diferente de valores, de los que usan otros tipos de configuración, tales
como el que el XML Configuration File utiliza. La Figura 3-5 muestra las opciones de
configuración de SQL Server disponibles para establecer configuraciones.
Figura 3-6
Si ve este cuadro de diálogo, es probable que quiera compartir las configuraciones
existentes entre los paquetes. Si lo hace, haga clic en el botón Reuse Existing. Si desea
borrar las entradas existentes y crear otras nuevas, haga clic en Overwrite.
Si las entradas de configuración no existen en esta configuración o ha hecho clic en
Overwrite, aparecerá la página Select Properties To Export, como se muestra en la
Figura 3-7.
Figura 3-7
La pagina Select Properties To Export usa una estructura de vista de árbol de las
propiedades de su paquete y le permite seleccionar las propiedades para la configuración
SSIS que ha seleccionado. Las propiedades se agrupan en las siguientes carpetas:
Variables. Contiene una lista de todas las variables de paquete y sus propiedades
correspondientes, para seleccionar de las entradas de configuración.
Connection Managers. Muestra una lista de todas las conexiones de paquete y le
permite elegir las propiedades específicas de las conexiones.
Log Providers. Permite establecer dinámicamente la configuración del registro, que
es la conexión que el proveedor de registro utilizará.
Properties. Muestra todas las propiedades a nivel de paquete (en vez de a nivel de
tarea o a nivel de contenedor) que se pueden utilizar para configurar el paquete.
Executables. Contiene la estructura de árbol de las tareas y contenedores.
Navegando a través de este árbol, puede configurar las propiedades específicas de
las tareas y contenedores.
Si está utilizando el XML Configuration File, Registry Entry, o tipo de configuración SQL
Server, puede establecer varias propiedades de configuración de una sola vez,
seleccionando múltiples casillas de verificación de propiedades. Para otros tipos de
configuración, sólo tiene que seleccionar la propiedad que usará para la configuración.
La página final del asistente le permite nombrar la configuración de modo que pueda
identificarla en la lista de configuraciones.
Figura 3-8
MUNDO REAL
Con frecuencia a través de requerimientos del cliente, se especifica que los nombres de
usuario y las contraseñas de conexión no puedan ser almacenados como una cadena de
texto plano en un archivo XML. Esta es una política razonable de seguridad. Si la
contraseña es almacenada en texto plano, cualquiera que tenga acceso al archivo puede
acceder al nombre de usuario y contraseña. Almacenar estos valores en una tabla de
SQL Server puede ser más seguro, ya que a los usuarios se les puede más fácilmente
denegar los permisos para la tabla. Sin embargo, si planea implementar paquetes entre
los servidores, la conexión a la tabla de configuración también necesita estar en una
configuración. Así que si almacena todo en una tabla de configuración en SQL Server,
puede crear una referencia circular: ¡no debe poner la configuración de cadena de
conexión, en la base de datos de la misma conexión!
Figura 3-9
Tabla 3-3 Lista los lugares donde puede usar expresiones, en un paquete SSIS.
COMPONENTE DESCRIPCION
La transformación Derived Column usa el lenguaje de expresiones SSIS, para
Transformación Derived
generar el valor de una columna nueva o cambiar el valor de una columna
Column
existente.
La transformación Conditional Split usa el lenguaje de expresiones SSIS, para
Transformación Conditional
evaluar el resultado booleano de condiciones que determinan, a que salida
Split
debería una fila ser enviada.
El contenedor For Loop usa una expresión, para definir la condición inicial del
Contenedor For Loop bucle y el cambio para cada ciclo y luego determinar si el ciclo se ha completado.
Utiliza una combinación de pruebas booleanas y operaciones de conjunto.
Las variables se pueden establecer dinámicamente a través de una expresión
SSIS. Esto se hace cuando una variable se selecciona en la ventana Variables y
Variable Expression la ventana Propiedades está abierta. Para usar esta capacidad, es necesario
establecer la propiedad EvaluateAsExpression a True y luego ingresar una
expresión en la propiedad Expression.
Las Property Expressions son una forma en que SSIS puede actualizar
dinámicamente el valor de las propiedades, mientras que un paquete se está
ejecutando. En lugar de utilizar un valor de código forzado para una propiedad,
Property Expressions puede usar una expresión para generar el valor. Estas propiedades incluyen las
propiedades del paquete, en el nivel Control Flow y contenedores y propiedades
de tarea y se accede a través de los editores y la ventana Properties.
Discutiremos las Property Expressions al final de esta sección.
Property Expressions
Un uso práctico de las expresiones SSIS es property expressions, que le permiten
actualizar las propiedades del Control Flow durante la ejecución del paquete. Se puede
aplicar una property expression de dos maneras. En primer lugar, se puede establecer la
propiedad como una expresión a través de la ventana Properties. La Figura 3-10,
muestra la propiedad Expressions en la ventana Properties de un paquete. Se abre el
Property Expressions Editor, haciendo clic en el botón de puntos suspensivos de la
propiedad Expressions, y en este cuadro de diálogo, puede seleccionar una propiedad de
la lista desplegable y a continuación, escribir una expresión.
100 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-10
Observe el botón de puntos suspensivos en el campo Expression del Property
Expressions Editor. Al hacer clic en este botón se abre un editor de expresiones, que es
similar a la Derived Column Transformation Editor que vimos en la Figura 3-9.
La segunda manera de establecer expresiones de propiedad es utilizar el editor de tarea
o contenedor, que tiene una o más formas de establecer las propiedades a través de una
expresión. La Figura 3-11, muestra el Foreach Loop Editor. La ficha Collection tiene un
método para establecer las propiedades con una expresión. El cuadro de dialogo
Property Expressions Editor, también se muestra en la Figura 3-11, se abre haciendo clic
en el botón de puntos suspensivos en la propiedad Expressions que ve directamente
sobre el cuadro de diálogo. Observe también la ficha de propiedades Expressions de la
izquierda, esta ficha le permite configurar las propiedades del contenedor Foreach Loop
en general (no específica de la colección).
Figura 3-11
TEMAS CLAVE
No sólo se puede configurar paquetes, tareas y propiedades de contenedores a través de
expresiones, también se puede actualizar el valor de las propiedades de conexión
mientras se ejecuta un paquete. Esta capacidad es especialmente útil cuando se tiene un
bucle Foreach que se itera sobre los archivos. Puede utilizar la variable donde la ruta
completa se captura y actualizar la conexión para el archivo con una expresión de
propiedad. En el Ejercicio 3 de la sección práctica de esta lección, se actualizará el valor
de la conexión de Microsoft Office Excel mientras se ejecuta el paquete.
PRACTICA Utilizando Configuraciones y Expresiones para Hacer las
Propiedades del Paquete Dinámicas
101 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
En estos ejercicios, se creará un XML Configuration File, que será compartido entre dos
paquetes, y luego creara un tipo de configuración SQL Server. A continuación, utilizará la
Property Expressions para actualizar el valor de una cadena de conexión, en una
conexión de paquetes.
EJERCICIO 1: Crear una configuración XML
En este ejercicio, se va a utilizar configuraciones SSIS, para crear un SSIS XML
Configurations File, que contiene la propiedad cadena de conexión del Connection
Manager AdventureWorks2008R2.
1. En BIDS, abra el proyecto SSIS llamado PLibroSSIS que ha modificado en los
ejercicios de práctica del Capítulo 2.
2. Abra el paquete DimCustomer.dtsx en BIDS haciendo doble clic en el paquete, en el
Solution Explorer.
3. Elija Package Configurations en el menú SSIS.
a. Seleccione la casilla de verificación Enable Package Configurations en el cuadro
de dialogo Package Configurations Organizer.
b. Haga clic en Add para crear una nueva configuración.
c. Haga clic en Next en la página Welcome to the Package Configuration Wizard.
d. En la lista desplegable Configuration Type, seleccione XML Configuration File.
e. Haga clic en el botón Browse junto al cuadro Configuration File Name, busque la
carpeta de los archivos instalados, y luego escriba SSIS_Connections
.dtsConfig. Haga clic en Guardar para guardar el nombre del archivo y la ruta.
f. Haga clic en Next en el Package Configuration Wizard para ir a la página Select
Properties to Export.
g. Debajo de objetos, expanda la carpeta Connection Managers, expanda
AventureWorks2008R2, a continuación, expanda la carpeta Properties de la
conexión AdventureWorks2008R2.
h. Seleccione la casilla de verificación junto a la propiedad ConnectionString, a
continuación, haga clic en Next.
i. Nombre la configuración como Configuracion XML Primaria, a continuación,
haga clic en Finish, lo que completa el proceso de generar el archivo de
configuración XML y la actualización de las configuraciones relacionadas.
4. En el cuadro de diálogo Package Configurations Organizer, haga clic en Close.
5. Guardar y cerrar el paquete DimCustomer.dtsx.
6. Abra el paquete DimPromotion.dtsx haciendo doble clic en el paquete en el Solution
Explorer.
7. Repita los pasos del 3a al 3e en el paquete DimPromotion.dtsx. Después del paso 3e,
haga clic en Next en la página Configuration Type, y se le solicitara que sobrescriba el
archivo existente o que reutilice las configuraciones que contiene. Haga clic en el
botón Reuse Existing.
8. Nombre la configuración XML como Configuracion XML Primaria, a continuación,
haga clic en Finish.
9. Guardar y Cerrar el paquete DimPromotion.dtsx.
EJERCICIO 2: Creación de una Configuración SQL Server
En este ejercicio, creará una segunda entrada SSIS Configuration utilizando el tipo SQL
Server Configuration, y luego se le agregara varios paquetes, conexiones y propiedades
de tareas a la configuración.
1. Si es necesario, inicie BIDS, abra el proyecto PLibroSSIS y, a continuación, edite el
paquete DimCustomer.dtsx haciendo doble clic en el paquete en el Solution Explorer.
Si se le solicita sincronizar las cadenas de conexión, haga clic en OK.
102 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. Elija Package Configurations en el menú SSIS para abrir el cuadro de dialogo
Package Configurations Organizer.
3. Haga clic en Add en el Package Configurations Organizer. En los siguientes pasos,
agregará una entrada SQL Server Configuration que va a contener varias
propiedades de paquete que podría necesitar cambiar sin modificar el paquete.
a. Haga clic en Next en la página Welcome, y luego en la página Select
Configuration Type, cambie Configuration Type en la lista desplegable a SQL
Server.
b. Cambiar Connection en la lista desplegable a AdventureWorks2008R2 (o confirme
que AdventureWorks2008R2 está seleccionada).
c. Haga clic en el botón New junto a la lista desplegable Configuration Table, lo que
genera un script SQL, para crear una tabla denominada [dbo].[SSIS
Configurations]. Haga clic en OK en el cuadro de diálogo Create Table para
ejecutar la sentencia CREATE TABLE y volver al Package Configurations Wizard.
d. Escriba PackageProperties en el cuadro Configuration Filter. La página Select
Configuration Type debe ser similar a la que se muestra en la Figura 3-12.
Figura 3-12
e. Haga clic en Next y, a continuación, por debajo de los objetos, desplazarse por la
lista para configurar las siguientes tres propiedades mediante la selección de sus
casillas correspondientes:
Connection Managers\AdventureWorksDW2008R2\Properties\ConnectionString
Properties\TransactionOption
Executables\Data Flow Task\Properties\Disable
f. Haga clic en Next, nombre Configuraciones Package Property a la
configuración, y haga clic en Finish para completar la configuración.
g. Haga clic en Close en el cuadro de dialogo Package Configurations Organizer.
4. Cambiar a SSMS, a continuación, conectarse al motor de base de datos. En la
ventana Object Explorer, busque la base de datos AdventureWorks2008R2 a
continuación, expanda la carpeta Tables.
5. Haga clic derecho en la tabla [dbo].[SSIS Configuration], a continuación, haga clic en
Edit Top 200 Rows.
6. Localice el registro, donde el valor de PackagePath es \Package\Data Flow
Task.Properties[Disable], y luego cambiar la columna ConfiguredValue de False
a True escribiendo sobre el valor en la columna. Esto obligará a la tarea Data Flow a
que no se ejecute.
103 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
7. Cierre la tabla, a continuación, retorne a BIDS.
8. Ejecute el paquete DimCustomer.dtsx, y observe que la tarea Data Flow no se ejecuta
a pesar de que la tarea no se ha desactivado en el Diseñador SSIS. Esto es así
porque el valor de configuración se actualiza cuando el paquete empieza.
9. Volver al SSMS, y repita el paso 6, cambiando la columna ConfiguredValue de la
propiedad Disable de True a False.
EJERCICIO 3: Usar Property Expressions para Actualizar una Conexión
En este ejercicio, tendrá que trabajar con el paquete Import_Excel_Files.dtsx,
reemplazando la tarea Script que actualiza la conexión Microsoft Office Excel con una
Property Expression.
NOTA: AGREGAR EL PAQUETE IMPORT_EXCEL_FILES.DTSX A UN
PROYECTO EXISTENTE
Puede agregar el paquete Import_Excel_Files.dtsx a su proyecto SSIS existente, haga
click derecho al SSIS Packages en el Solution Explorer y clic en Add Existing Package.
Select File System de la lista desplegable Package location, a continuación, busque el
archivo en el campo Package Path.
1. Abra el paquete Import_Excel_Files.dtsx haciendo doble clic en el paquete en el
Explorador de soluciones.
2. Eliminar la tarea Script en el interior del contenedor Foreach Loop, haga clic derecho
en la tarea y clic en Delete. Confirmar la eliminación cuando se solicite.
3. En la ventana Connection Managers en la parte inferior del Diseñador SSIS,
seleccione Excel Connection Manager.
4. Abra la ventana Properties, y haga clic en la chincheta para bloquear la ventana, en la
posición abierta.
5. Mientras que el Excel Connection Manager está todavía seleccionado, haga clic en la
propiedad Expressions en la ventana Properties.
6. Haga clic en el botón de puntos suspensivos a la derecha del cuadro Expressions
para abrir el Property Expressions Editor.
a. En la lista desplegable que aparece, haga clic en el valor Property, seleccione
ExcelFilePath.
b. En la misma línea, haga clic en el botón de puntos suspensivos a la derecha de la
columna Expression para abrir la ventana Expression Builder.
c. En la sección superior izquierda, expanda la carpeta Variables, busque la variable
User::FileName, y arrastrela al cuadro de texto Expression, que luego se debe
leer @[User::FileName].
d. Haga clic en OK para guardar los cambios y haga clic en OK de nuevo en
Property Expressions Editor para volver al paquete.
7. Vaya a la ficha Data Flow, a continuación, seleccione el origen Excel Source.
8. En la ventana Properties, cambie el valor de ValidateExternalMetadata a False. Esto
asegura que el paquete no se interrumpa durante la validación si la variable no tiene
un valor válido antes de que el contenedor Foreach Loop se ejecute.
9. Ejecutar el paquete en BIDS para probar la ejecución. Las conexiones asumen que el
usuario a iniciado la sesión como administrador y que la ruta de los archivos es:
C:\SSIS\LibroSSIS\PLibroSSIS. Puede que necesite cambiar la conexión Archive y
la carpeta Foreach Loop para activar el paquete y se pueda ejecutar con éxito.
Comprobación Rápida
1. ¿Cuáles son algunas de las razones para usar configuraciones de paquete en la
arquitectura SSIS?
104 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. ¿Cuando hace una lectura de paquete y usa las entradas de configuración?
3. ¿Cuando son evaluadas las propiedades de expresiones, si un paquete se está
ejecutando?
Respuestas de Comprobación Rápida
1. Las configuraciones de paquete SSIS son valiosas, si se tiene un entorno SSIS en el
cúal se necesite implementar paquetes de un servidor a otro y las propiedades de
estos paquetes, tal como sus conexiones, necesitan ser actualizadas.
2. Las entradas de configuración, se leen al comienzo de la ejecución del paquete. En
BIDS, las configuraciones sólo se aplican cuando se ejecuta un paquete en el modo
de depuración; ellas no son aplicadas cuando se está diseñando el paquete.
3. A diferencia de las entradas de configuración que se leen al comienzo de la ejecución
del paquete, las Property Expressions se actualizan cuando la propiedad es accedida
por el paquete, durante la ejecución del paquete. Una Property Expression puede
cambiar el valor de una propiedad, en medio de la ejecución del paquete, y el nuevo
valor se lee cuando la propiedad es requerida por el paquete.
105 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
importación de los archivos del paquete SSIS a SQL Server. El despliegue puede ser
manual o puede ser impulsado a través de la utilidad de implementación.
Implementación Manual del Paquete. Puede mover los paquetes SSIS a una
carpeta de destino, al copiarlos de forma manual, mediante el uso de una herramienta
source-control, que maneja el despliegue del archivo, o mediante la creación de un
script o una aplicación que se encargue de la implementación. Si almacena el
paquete en SQL Server, puede utilizar en la línea de comandos, la utilidad DTUtil, que
viene con SSIS, para implementar paquetes a SQL Server o manualmente importarlos
a través de SSMS. La utilización de DTUtil se discute en la sección titulada "Utilizando
la Utilidad de Administración SSIS, de Linea de Comandos DTUtil" más adelante en
este capítulo. Si decide importar sus paquetes de forma manual, conectese al servicio
SSIS a través de SSMS, abrir la carpeta Stored Packages, clic derecho en la carpeta
MSDB, a continuación, clic en Import Package para abrir el cuadro de diálogo Import
Package, que se muestra en la Figura 3-13. El Capítulo 4 cubre el servicio SSIS en
más detalle.
Figura 3-13
Utilidad de implementación. La herramienta automatizada integrada SSIS, la
Package Deployment Utility, también puede implementar paquetes ya sea a un
sistema de archivos o a SQL Server. La ventaja de usar la utilidad de implementación
SSIS, es que se puede implementar un proyecto completo, al mismo tiempo a un
sistema de archivos o a un SQL Server. La Package Deployment Utility primero
genera un conjunto de archivos, que están empaquetados y listos para ser
desplegados y, a continuación, ejecuta el instalador de paquetes para realizar la
implementación. El resto de esta lección cubre Package Deployment Utility y el
Package Installation Wizard.
Creación de un Kit de Instalación usando el Package Deployment Utility
La Package Deployment Utility ayuda a crear lo que se llama un deployment set, que
contiene todos los archivos que necesita para implementar paquetes en un proyecto.
Trabaja directamente en la configuración de un proyecto BIDS para generar el conjunto
de despliegue. Cada proyecto SSIS tiene una propiedad que habilita la utilidad de
implementación. Cuando esta propiedad está habilitada, cada vez que se construye el
proyecto (o el depurador se ejecuta), los siguientes elementos en el proyecto se copian
en una ubicación de carpeta individual:
Paquetes
Archivos Misceláneos
Project Deployment Manifest (el kit de instalación del archivo de configuración,
discutido más adelante en esta sección)
Para activar la utilidad de implementación para un proyecto SSIS, siga estos pasos:
106 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
1. Clic derecho en el proyecto SSIS que figura en el Solution Explorer de BIDS, y luego
clic en Properties. La Figura 3-14, muestra la pagina de la propiedad Deployment
Utility en el cuadro de dialogo SSIS Project Property Pages.
Figura 3-14
2. Cambie la propiedad CreateDeploymentUtility de False a True.
3. Establecer la ubicación en la que los archivos de implementación deben ser
almacenados, cuando el proyecto se construye por la modificación de la propiedad
DeploymentOutputPath. Esta propiedad puede ser una ruta relativa, a partir de la
carpeta del proyecto SSIS, o puede entrar una ruta compartida. La ubicación
predeterminada es la carpeta ..\bin\Deployment\ en la carpeta del proyecto.
4. En el momento de la implementación, tiene la opción de permitir que las
configuraciones del paquete sean modificadas. Por defecto, la propiedad
AllowConfigurationChanges esta establecida a True, pero esto se puede cambiar a
False si fuese necesario limitar los cambios de configuración, para el kit de
implementación, cuando se está implementando.
5. Clic en Aceptar.
El siguiente paso es ejecutar un proceso construido en el proyecto SSIS para generar el
conjunto de despliegue. Para ello, haga clic derecho en el proyecto SSIS en el Solution
Explorer y haga clic en Build.
IMPORTANTE: APAGAR IMPLEMENTACIÓN CUANDO TERMINE
Si la propiedad CreateDeploymentUtility se establece a True, en cualquier momento,
cualquier paquete en el proyecto es depurado (por ejemplo, si se ejecuta en BIDS), un
nuevo conjunto de despliegue se creará. Esto sobrescribirá conjuntos de despliegue
existentes, así que asegúrese de establecer el CreateDeploymentUtility a False después
de haber creado el conjunto de implementación.
En este punto, es una buena idea abrir la carpeta de la ruta Deployment para verificar
que los archivos se han generado con éxito. En esta carpeta, debe ver su paquete de
archivos .dtsx, archivos miscelaneos definidos en su proyecto, y un paquete de
implementacion de archivos de configuración con extensión de archivo
.SSISDeploymentManifest. Este archivo contiene la lista de paquetes y se utiliza cuando
se implementa el set de instalación. La Figura 3-15, muestra los archivos que forman
parte del conjunto de implementación de los ejemplos del capítulo.
107 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-15
Implementación de paquetes
Como se señaló anteriormente, ya que los paquetes SSIS se almacenan en la carpeta del
proyecto, se puede mover manualmente los archivos .dtsx actuales, a un nuevo entorno
de servidor, a un recurso compartido o manualmente importarlos a SQL Server a través
de SSMS o por la utilidad de línea de comandos DTUtil (discutida en la siguiente sección,
"Utilizando la utilidad SSIS de línea de comandos DTUtil"). También puede utilizar el
proceso de implementación automatizado, el cual puede realizar una implementación por
lotes de todos los paquetes SSIS en su proyecto, ya sea a una carpeta de destino o a
SQL Server. El uso de las caracteristicas de despliegue, puede hacer la gestión de
configuración y despliegue multipaquete, más fácil.
Después de que el Package Deployment Utility crea el kit de instalación, como se mostró
anteriormente en la Figura 3-15; su próximo objetivo es tomar el conjunto de archivos e
implementarlos en un destino, mediante el Package Installation Wizard. Para comenzar el
despliegue del kit de instalación, tome las siguientes acciones:
1. El primer paso opcional es mover el kit de instalación al equipo destino. Si su destino
es un recurso compartido de red o un SQL Server, del que tiene acceso de seguridad
al servidor de desarrollo, los archivos de distribución pueden permanecer en su lugar.
2. Para poner en marcha el kit de instalación, localice la carpeta que contiene los
archivos de implementación, y buscar el archivo llamado [Nombre del Proyecto]
.SSISDeploymentManifest. Para abrir el Package Installation Wizard, haga doble clic
en el archivo de manifiesto de implementación. Cuando se ejecuta el asistente, tendrá
la opción de implementar el paquete a una base de datos SQL Server o a un sistema
de archivos. Si selecciona un despliegue de bases de datos, necesita dar el nombre
del servidor en el que el paquete será implementado y las credenciales; también
necesita dar una ubicación donde colocar sus archivos.
3. En la página Deploy SSIS Packages, seleccione el destino de implementación, como
muestra la Figura 3-16. Elija la File System Deployment o la SQL Server Deployment,
y a continuación, especifique si los paquetes seran validados después del despliegue.
Haga clic en Next.
108 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 3-16
4. En base a lo que haya seleccionado en la primera página, será capaz de definir la
ubicación de almacenamiento específica, usando los detalles de conexión de SQL
Server o a un archivo y ruta de carpeta. La Figura 3-17 muestra la página Specify
Target SQL Server. Es necesario establecer el Package Path, que es la subcarpeta
SSIS virtual en el almacenamiento de base de datos MSDB. Haga clic en Next.
Figura 3-17
5. La página Select Installation Folder le permite designar un lugar para todos los
archivos dependientes. Haga clic en Next.
TEMAS CLAVE
Si vas a implementar en SQL Server o en el sistema de archivos, el Package Installation
Wizard copia los archivos dependientes a la carpeta que especifique. Esto incluye los
archivos de configuración XML, que es usado por otro paquete en el proyecto (pero sólo
donde la ruta de configuración XML, es de código forzado en el paquete y no usa una
variable de entorno). El Package Installation Wizard actualizará las entradas de
configuración XML en el paquete y los cambiara para apuntar a la nueva ruta XML
Configuration File.
6. Al hacer clic en Next en la página Confirm Installation se iniciará el despliegue.
7. Si su paquete incluye los archivos de configuración, en este punto, la página
Configure Packages le permite cambiar cualquiera de las propiedades que existen,
como muestra la Figura 3-18. Sólo los archivos de configuración XML son
109 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
actualizables durante el despliegue, no se puede actualizar otro tipo de
configuraciones. Haga clic en Next.
Figura 3-18
8. La página final del asistente muestra los resultados de la implementación. Haga clic
en Finish para completar la implementación.
El resultado de la implementación es la copia de los paquetes al destino especificado, así
como la actualización de las ubicaciones de los archivos de configuración al lugar en
donde los nuevos archivos seran ubicados. Figura 3-19, muestra el Explorador de
objetos en SSMS después de los paquetes han sido enviados a SQL Server.
Figura 3-19
Utilizando la Utilidad SSIS de Línea de Comandos DTUtil
SSIS viene con la utilidad de línea de comandos DTUtil, que permite realizar tareas de
gestión de paquetes, como el despliegue, a través de la línea de comandos o procesos
por lotes de archivos. DTUtil puede trabajar con paquetes que se almacenan en el
sistema de archivos, en SQL Server, o en una carpeta designada en el equipo SSIS,
llamada SSIS Package Store. Esta sección cubre el uso de DTUtil para la gestión de
paquetes.
Operaciones DTUtil y Parámetros
DTUtil utiliza parámetros de línea de comandos estándar para realizar sus operaciones.
Por ejemplo, la ubicación de almacenamiento de paquetes, referencia el uso de
parámetros /SQL, /FILE, y /DTS de orígenes y destinos.
Operativamente, DTUtil puede realizar varias operaciones de paquete centrados en
gestión. La Tabla 3-4 enumera algunos de los modificadores de línea de comandos que
110 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
realizan operaciones en los paquetes, puede utilizar estos modificadores, con otros
parámetros de comando, para localizar el origen y el destino de paquetes.
Tabla 3-4 Modificadores de Linea de Comandos de DTUtil
PARAMETRO LINEA DE COMANDO DESCRIPCION
/COPY Copia paquetes de un origen a un destino
/MOVE Mueve paquetes de un origen a un destino
/DELETE Elimina paquetes de un destino
/EXITS Comprueba la existencia de un paquete
/ENCRIPT Encripta un paquete existente
/DECRIPT Desencripta un paquete usando una contraseña de paquete
/SIGN Firma digitalmente un paquete
Crea y gestiona carpetas para el paquete SSIS Store y en la
/FCREATE
base de datos MSDB de SQL Server
Para ilustrar la utilidad DTUtil para la gestión y operaciones SSIS, vamos a ver algunos
ejemplos comunes. En el primer ejemplo, mostrado aquí, la operación DTUtil copia un
archivo llamado MyPackage.dtsx de una carpeta local a la misma carpeta local con un
nuevo nombre de archivo MyCopiedPackage.dtsx. (Note que los paréntesis son
necesarios si existen espacios en la ruta).
dtutil.exe /FILE c:\MyPackage.dtsx /COPY FILE; c:\MyCopiedPackage.dtsx
El siguiente ejemplo elimina MyPackage.dtsx de la base de datos local MSDB de SQL
Server con una determinada sesión y contraseña de SQL. Si /SOURCEUSER y
/SOURCEPASSWORD no se proporcionan, la declaración usará la autenticación de
Windows, como muestra la segunda línea:
dtutil.exe /SQL MyPackage /SOURCEUSER SSIS_User /SOURCEPASSWORD
[password] /DELETE
dtutil.exe /SQL MyPackage /DELETE
El siguiente ejemplo comprueba la existencia de MyPackage en el SQL Server local.
(Note que la extensión de archivo .dtsx no es necesaria para referenciar el paquete en
SQL Server). Si el paquete no existe, el resultado de línea de comandos leerá El paquete
especificado no existe.
dtutil.exe /SQL MyPackage /EXISTS
El siguiente ejemplo despliega (copia) un paquete del File System a SQL Server:
dtutil.exe /FILE c:\MyCopiedPackage.dtsx /COPY SQL;\MyCopiedPackage
NOTA: DETALLES DE EJECUCION DTUTIL
Para una revisión detallada de los parámetros de la línea de comandos DTUtil, consulte
Libros en Pantalla SQL Server 2008 o ejecutar la línea de comandos comando
DTUtil/Help en un servidor que tiene instalado SSIS.
Métodos de Ejecución DTUtil
Puede ejecutar DTUtil a través de una línea de comandos programada y utilidades,
incluidos el SQL Server Agent o Windows Scheduler. Además, puede crear archivos por
lotes, que se pueden utilizar para automatizar procesos comunes o recurrentes.
Cuando se ejecuta DTUtil a través de una utilidad automatizada de línea de comandos,
puede utilizar la Tabla 3-5 para interpretar los códigos de retorno.
Tabla 3-5 Codigos de Retorno para DTUtil
CODIGO DE RETORNO DESCRIPCION
0 Éxito
1 Falla
4 Paquete no encontrado
5 Paquete no cargado
111 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
6 Mala sintaxis
112 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
e. Haga clic en Next para mostrar la página Select Installation Folder. Aquí es donde
los archivos relacionados se colocarán en el sistema de archivos, como archivos
de configuración.
f. Haga clic en Next para confirmar la instalación.
g. Debido a que un archivo de configuración fue creado en los ejercicios de la
Lección 1, verá la pantalla Configure Packages. Haga clic en Next para aceptar
los valores ya definidos en los archivos de configuración.
h. Haga clic en Finish para concluir la implementación.
3. Comprobar que los paquetes fueron desplegados exitosamente realizando los
siguientes pasos:
a. Abrir SSMS.
b. En el cuadro de dialogo Connect to Server, seleccione Integration Services de la
lista desplegable Server Type y Localhost de la lista desplegable Server Name.
c. En el Explorador de objetos, expanda Stored Packages-MSDB. Verifique que
todos los paquetes del proyecto existen.
Comprobación Rápida
1. ¿Qué elementos se crean cuando la propiedad CreateDeploymentUtility para el
proyecto SSIS se establece a True y el proyecto se construye? ¿Dónde puede
encontrar estos elementos?
2. ¿Cuáles son los dos tipos de destinos a los que un kit de instalación puede
implementar paquetes SSIS?
3. ¿Se puede usar DTUtil para eliminar un paquete que se implementa en SQL Server?
Respuesta de Comprobación Rápida
1. Una copia de todos los paquetes, archivos de configuración XML, archivos
miscelaneos del proyecto, y el archivo de configuración del kit de instalación son
creados con la utilidad de implementación. Estos archivos se copian en la ubicación
especificada en la propiedad DeploymentOutputPath del proyecto. El valor por defecto
es [ruta del proyecto]\bin\Deployment, donde [ruta del proyecto], es la ubicación del
proyecto que está trabajando.
2. Los paquetes SSIS se pueden implementar en un sistema de archivos o una base de
datos SQL Server y el kit de instalación le pedirá que elija una de estas.
3. Sí, puede utilizar DTUtil para eliminar paquetes en el sistema de archivos y en SQL
Server mediante el uso del modificador de línea de comandos /DELETE.
Escenario Posible: Desplegando Paquetes SSIS
Se le pide manejar un conjunto de 25 paquetes SSIS, generados por un equipo de
desarrollo. Estos paquetes realizan la consolidación de los datos de tres sistemas de
origen: IBM DB2, Oracle y Flat File exportados de un sistema heredado. El destino es una
base de datos SQL Server que se utiliza para Customer Relationship Management (CRM)
y reportes del call-center. Las fuentes no son soportadas con la autenticación de
Windows, pero un nombre de usuario y contraseña se proporciona inmediatamente
después del cambio de contraseña mensualmente, como parte del cumplimiento de las
políticas de seguridad de la empresa. Es necesario definir los procedimientos de
implementación y hacer los paquetes independientes de la información de conexión de
usuario, de la fuente. ¿Cómo cumplir los siguientes requisitos?
1. Los paquetes deben apuntar a los servidores correctos y ser actualizados con los
nombres de usuario y contraseñas, sin necesidad de editar los paquetes en
producción. Sin embargo, los paquetes que el equipo de desarrollo le entregó,
contienen conexiones de código forzado (hard-coded). ¿Cómo puede implementar
una arquitectura flexible para manejar los cambios?
113 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
2. Su organización ha invertido en un entorno de prueba que refleja el entorno de
producción, por lo que el objetivo de la implementación, es desplegar todos los
paquetes para un ciclo de desarrollo, a un servidor de prueba, en el que los paquetes
pueden pasar por un proceso de aseguramiento de calidad riguroso, antes de que se
implementan en producción. Su estrategia de implementación debe incluir un conjunto
completo de archivos con un proceso automatizado de implementación, y los
paquetes deben ser desplegados a SQL Server para ambos entornos, de modo que
los paquetes pueden ser respaldados, a través de su procedimiento de backup de
base de datos. ¿Cómo debería proceder?
3. Ocasionalmente, errores son identificados, cuando se esta dándo un simple paquete
SSIS para desplegar. Para minimizar el error humano en la implementación, es
necesario un procedimiento automatizado para implementar el archivo a los
servidores de prueba y desarrollo. ¿Cómo se puede lograr esto?
Resumen de Capitulo
A través de las configuraciones de paquetes SSIS, puede almacenar propiedades del
paquete, fuera del paquete. Las propiedades disponibles pueden venir de varios
objetos de origen: objetos a nivel de paquete, objetos Control Flow, variables,
conexiones, etc.
Las configuraciones pueden ser almacenadas en el registro, en un archivo XML, en
una variable de entorno, en una variable de paquete padre, o en una tabla SQL
Server.
Los paquetes pueden utilizar más de una configuración. Múltiples configuraciones se
aplican en orden, y los paquetes pueden compartir entradas de configuración.
SSIS incluye un lenguaje de expresiones para configurar dinámicamente algún control
de flujo y objetos Data Flow. Una valiosa aplicación del lenguaje de expresiones es la
Property Expressions, que permiten propiedades en un paquete, que se actualiza en
tiempo de ejecución.
Se puede implementar paquetes al SQL Server o al sistema de archivos, ya sea
manualmente o usando el Package Deployment Utility en BIDS.
La implementación incorporada en SSIS es un proceso de dos pasos que consiste en
crear un kit de instalación de despliegue a través de Package Deployment Utility y
luego implementar el kit de instalación mediante el Package Installation Wizard.
SSIS viene con la utilidad de línea de comandos DTUtil, que puede copiar, mover,
borrar, encriptar y firmar digitalmente los paquetes.
114 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
CAPITULO 4
115 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
durante la ejecución. El más grande beneficio para utilizar el servicio SSIS es la gestión y
la seguridad de paquetes implementados a SQL Server.
Esta lección empieza por mirar con más detalle el servicio SSIS en conjunto con SSMS y
luego explora las consideraciones que necesita analizar, si está planeando utilizar SSIS
en un entorno de clúster. Por último, este capítulo se ocupara de los aspectos
importantes de seguridad de paquetes implementados a SQL Server, así como la
encriptación de seguridad dentro de un paquete.
Administrar el servicio SSIS
El servicio SSIS es un servicio de Windows denominado SQL Server Integration Services
10.0, y corre el archivo ejecutable MsDtsSrvr.exe. Puede administrar este servicio como
lo hacen otros servicios de Windows. Sin embargo, asegúrese de usar el SQL Server
Configuration Manager para configurar los requisitos de arranque y la cuenta de servicio.
Después de que el servicio se ha iniciado, puede conectarse a ella a través de SSMS. En
la ventana Connect To Server, cambie el tipo de servidor a Integration Services. Después
que se conecte al servicio SSIS, la ventana del Object Explorer en SSMS le permite
administrar, asegurar y ejecutar paquetes implementados en el servidor. La Figura 4-1,
muestra SSMS conectado al servicio SSIS.
En el Object Explorer, encontrarás dos carpetas de nivel superior: Running Packages y
Stored Packages.
IMPORTANTE: INSTALANDO COMPONENTES PERSONALIZADOS
Si necesita instalar un componente personalizado (asi como, una tarea personalizada,
proveedor de registro, origen, transformación o destino), el componente debe ser
instalado en todos los servidores que requieren el uso del componente. Copiar el
ensamblado del componente en la carpeta %Archivos de programa%\ Microsoft SQL
Server\100\DTS\, luego, registrar el ensamblado con el gacutil.exe con el modificador /i
para la instalación. Después de que el componente es registrado, puede añadirlo a la
barra de herramientas BIDS, haciendo clic derecho en la Toolbox y seleccionando
Choose Items
Figura 4-1
La Carpeta Running Packages
El servicio SSIS monitorea paquetes que se ejecutan en el servidor, ya sea que se
almacenan en el servidor o sean ejecutados de un proyecto o de un sistema de archivos.
Por lo tanto, se puede conectar con el servicio SSIS en SSMS y actualizar la carpeta
Running Packages, para ver que paquetes están ejecutandose actualmente. Además,
puede hacer clic derecho en un paquete en ejecución y luego, seleccionar Stop para
116 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
finalizar la ejecución del paquete después de que la siguiente tarea se complete (no
necesariamente de inmediato).
La Carpeta Stored Packages
La carpeta Stored Packages tiene dos subcarpetas, File System y MSDB; como se puede
ver en la Figura 4-1. La carpeta File System no muestra todos los archivos en el servidor,
en su lugar muestra sólo los archivos que se almacenan en la ubicación del almacén de
paquetes. El almacén de paquetes se encuentra por defecto en la carpeta %Archivos de
programa%\Microsoft SQL Server\100\DTS\Packages\. Sin embargo, puede cambiarlo, a
una ubicación diferente. El servicio utiliza un archivo de configuración XML que contiene
la ruta al almacén de paquetes, de la siguiente manera:
C:\Archivos de programa\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml
Puede editar este archivo XML y cambiar el valor del elemento <StorePath> a una
diferente ruta absoluta. El valor también acepta rutas relativas. El servicio muestra
algunas subcarpetas bajo esta ubicación del almacén de paquetes, y SSMS las muestra
como subcarpetas en la consola SSMS.
La carpeta MSDB muestra los paquetes que se han implementado a SQL Server. Estos
paquetes se almacenan en la base de datos MSDB de SQL Server en una tabla llamada
[dbo].[sysssispackages]. Puede crear carpetas virtuales en la carpeta MSDB e importar
paquetes directamente a estas subcarpetas. La Figura 4-1 muestra dos subcarpetas de
la carpeta MSDB: Data Collector y Maintenance Plans. Estos son para paquetes del
sistema ya sea generadas por el plan de mantenimiento o usado por el subsistema Data
Collector de SQL Server 2008.
Administrar paquetes en SSMS
Después de haber implementado o importado un paquete en SQL Server o en el almacén
de paquetes, puede realizar algunas tareas de gestión de paquetes. La Figura 4-2,
muestra el menú contextual para un paquete en SSMS.
Figura 4-2
El menú contextual muestra varias opciones. Las opciones New Folder e Import Package
son para la carpeta MDSB misma, para crear una carpeta virtual o añadir un nuevo
paquete de sistema de archivos.
La opción Export Package le permite tomar un paquete implementado y desplazarlo al
sistema de archivos o a otro SQL Server. El Upgrade Packages es para paquetes SSIS
en SQL Server 2005 que necesitan ser actualizados a paquetes SSIS en SQL Server
2008. Un asistente le guiará en el proceso de actualización.
El Package Roles es para la gestión de la seguridad de los paquetes implementados a la
base de datos MSDB, que se discutirá más adelante en esta lección. También puede
117 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
ejecutar un paquete usando la opción Run Package o eliminar el paquete implementado
usando la opción Delete.
Configurar el Servicio SSIS en un Entorno Clúster de Windows
SSIS es uno de los componentes de SQL Server 2008 que no soporta instancias. Esto
significa que sólo puede haber un servicio SSIS instalado por servidor. Además, el
servicio SSIS no es compatible con clúster durante la instalación, por lo que necesita ser
configurarlo por separado si se trabaja con un Clúster Windows.
Puede encontrar detalles sobre la configuración SSIS en un entorno clúster en el Libro
blanco "Configuring Integration Services in a Cluster" (http://msdn.microsoft.com/en-
us/library/ms345193.aspx). En pocas palabras, hay dos formas de configurar el servicio
SSIS en un entorno clúster:
Instalando el servicio SSIS independientemente de los recursos del clúster.
Puede instalar componentes SSIS en todos los nodos del cluster, y por defecto, no
serán parte de algun grupo de recursos del clúster. El servicio se iniciará en todos los
nodos, y puede ejecutar los paquetes desde cualquier nodo del clúster. Si todos los
paquetes se almacenan en un recurso compartido de red que no es parte del almacén
de paquetes, no necesita configuración adicional.
Si desea centralizar todos los paquetes en SQL Server, es necesario cambiar el
archivo MsDtsSrvr.ini.xml. Cambiar el elemento <ServerName> para referenciar a un
servidor específico y a la instancia; si el SQL Server esta en el clúster, utilice el
nombre del servidor virtual y la instancia. Por último, cambie este archivo en todos los
nodos para que se pueda conectar con el servicio SSIS en cualquier máquina y ver
los mismos paquetes.
Integración del servicio SSIS en un grupo clúster. Puede agregar el servicio SSIS
como un recurso de clúster, un proceso detallado en la sección de Libro blanco
"Configuring Integration Services in a Cluster" mencionada anteriormente. Si desea
almacenar paquetes en el almacén de paquetes, debería escoger este enfoque,
porque el servicio compartido se ejecuta en un solo nodo a la vez y puede hacer
referencia al nombre virtual del servidor. El servicio tendría que apuntar a un archivo
MsDtsSrvr.ini.xml compartido en una unidad compartida en el mismo grupo de
recursos clúster, que el servicio. Esto requiere un cambio de registro, que también
está documentado. La ubicación del almacén de paquetes debe estar también, en la
unidad compartida en el mismo grupo de recursos de clúster.
TEMAS CLAVE
Cuando se ejecuta un paquete en un nodo de servidor de entorno clúster Windows y el
nodo falla, aplique las reglas de reinicio. Puede activar los checkpoints en los paquetes y
tener los archivos checkpoint creados en un recurso compartido, de manera que si el
paquete necesita ser reiniciado, puede localizar y utilizar el archivo checkpoint.
Agregando Seguridad en Paquetes SSIS
La característica de seguridad integrada SSIS le permite añadir encriptación de seguridad
a cada uno de sus paquetes o conjunto de roles de seguridad para los paquetes
desplegados a MSDB. Los paquetes SSIS de por si no contienen ningun origen o destino
de datos, pero pueden proporcionar información acerca de los datos relacionados que
están procesando. La seguridad SSIS es importante por dos razones principales:
Información Connection. Aunque las definiciones de paquetes no contienen ningún
dato de sus orígenes o destinos, tienen información de conexión en los paquetes, por
lo que es necesario limitar el acceso a ellos.
Información Schema. Sus paquetes extraen datos de origenes y lo transfieren a los
destinos, aunque alguien no pueda acceder al origen o al destino directamente, si esa
118 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
persona adquiere un paquete sin cifrar, él o ella tendrá acceso a lo que estos
orígenes y destinos muestren.
Por lo tanto, se necesita ver la forma de impedir el acceso a cualquiera, a conexiones o al
paquete completo. Hay tres formas de limitar el acceso a los paquetes:
Puede aplicar roles de seguridad de SQL Server para cualquier paquete, que se ha
desplegado en la base de datos MSDB de SQL Server. Puede definir que inicios de
sesión SQL o grupos Windows o usuarios tienen acceso de lectura y escritura a un
paquete, que controla si alguien puede ejecutar o exportar un paquete.
Puede emplear encriptación de seguridad mediante el nivel de protección de paquete,
en la que parte o todo el paquete está cifrado. Puede establecer las propiedades de
cifrado de seguridad en el desarrollo de un paquete en BIDS, cuando implementa un
paquete, o al importar o exportar un paquete. Puede aplicar estas propiedades ya sea
para todo el paquete o para datos sensibles solamente. Es importante que entienda
completamente que asegurar un paquete, significa todo lo relativo a información de
conexión e información del esquema.
Puede utilizar una seguridad a nivel de archivo, en el que se pueden aplicar los
derechos de acceso al archivo o carpeta si los paquetes residen en el sistema de
archivos de una computadora.
Esta sección comienza observando los roles de los paquetes en MSDB y cómo cifrar
parte de un paquete o el paquete completo a través de los niveles de protección del
paquete y contraseñas de paquete. También puede utilizar la herramienta de línea de
comandos DTUtil.exe para ayudarle a gestionar la seguridad.
Asignar Roles y Seguridad de Paquetes Almacenados en MSDB
Si ha implementado un paquete a SQL Server en la base de datos MSDB, puede
implementar seguridad adicional con respecto a quién puede ver, ejecutar o modificar un
paquete mediante el uso de roles de base de datos. Los roles son fijados, a roles a nivel
de base de datos, y se les asigna a través de la base de datos MSDB. Los roles se
asignan para acciones de lectura y/o escritura de la siguiente manera:
Acciones de lectura enfocadas a la visualización y ejecución de paquetes.
Acciones de escritura aplicadas a mover paquetes que entran y salen de MSDB sin
ejecutar los paquetes.
Puede asegurar los paquetes a través de roles en MSDB, mediante la conexión con el
servicio SSIS en SSMS.
Después de conectarse al servicio SSIS, necesita abrir el cuadro de diálogo Package
Roles. Siga estos pasos para asegurar su paquete mediante el uso de roles:
1. En el árbol de consola, expanda la carpeta Stored Packages y luego la carpeta
MSDB.
2. Haga clic derecho en el nombre del paquete al que desea aplicar los roles de
seguridad, a continuación, seleccione Package Roles para mostrar el cuadro de
diálogo Package Roles, que se muestra en la Figura 4-3.
Cuando se abre el cuadro de diálogo Package Roles para un paquete por primera vez, el
cuadro de diálogo muestra valores por defecto, para el rol de lectura y el rol de Escritura.
Los roles predeterminadas se crean con la base de datos MSDB, en la instalación SQL
Server 2008 y puede ser utilizado por el servicio SSIS y sus paquetes. Puede utilizar los
roles integrados y asignar usuarios a los roles o crear nuevos roles de base de datos en
MSDB y luego hacer que su paquete utilice estos roles personalizados, no se puede
hacer ambas cosas. Tampoco se puede seleccionar múltiples roles en la lista
desplegable, Reader Role o Writer Role. Pero esta limitación se compensa con la
flexibilidad de los roles integrados y la capacidad de asignar a usuarios o inicios de
sesión de base de datos, de estos roles en MSDB. La Tabla 4-1 define la seguridad de
los roles integrados SSIS en MSDB.
119 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 4-3
Considere las siguientes directrices para decidir qué roles usar:
Los administradores de ejecución SSIS deben tener privilegios de ejecución, pero no
deben añadir paquetes a SQL Server, debe asignar el rol db_ssisoperator, que puede
ver, ejecutar, y exportar paquetes.
Para usuarios que deben poder trabajar sólo con los paquetes que han creado, debe
asignar el rol db_ssisltduser, que tiene derechos de acceso limitado y permite a los
usuarios ejecutar y exportar sólo los paquetes que estos usuarios han importado a
SQL Server. Los usuarios asignados al rol db_ssisltduser no pueden trabajar con las
carpetas de otros usuarios.
Tabla 4-1 Roles integrados SSIS en MSDB
ROL ACCIONES LECTURA ACCIONES ESCRITURA
db_ssisadmin Ver todos los paquetes. Eliminar todos los paquetes.
Ejecutar todos los paquetes. Cambiar todos los roles de paquete.
Exportar todos los paquetes. Importar paquetes.
Ejecutar todos los paquetes en SQL
Server Agent.
db_ssisltduser Ver paquetes de usuario. Eliminar paquetes de usuario.
Ejecutar paquetes de usuario. Cambiar roles de paquete de usuario.
Exportar paquetes de usuario. Importar paquetes.
db_ssisoperator Ver todos los paquetes. Ninguno.
Ejecutar todos los paquetes.
Exportar todos los paquetes.
Ejecutar todos los paquetes en SQL
Server Agent.
Windows Admin Ver detalles de ejecución de paquetes Detener paquetes en ejecución actuales.
en ejecución actuales.
Entender y Establecer el Nivel de Protección de Paquetes
La propiedad ProtectionLevel de un paquete cifra la información de definición de paquete
que se encuentra en el archivo XML referenciado. Se establece la propiedad
ProtectionLevel en el nivel de paquete cuando se está editando el paquete en BIDS. Esto
significa que se define lo que debe ser cifrado y cómo debe ser cifrado, para todo el
paquete. También se puede establecer una propiedad PackagePassword, que se utiliza
cuando el ProtectionLevel requiere metadatos cifrados en el paquete, con una
contraseña. La Figura 4-4, resalta las propiedades de seguridad relevantes del paquete.
Por defecto, el paquete está configurado para utilizar el ProtectionLevel
EncryptSensitiveWithUserKey. Esto significa que si se crea un paquete con
ProtectionLevel por defecto y su paquete contiene información confidencial (como una
conexión, con una contraseña), las conexiones que contiene la contraseña serán
encriptadas y sólo lo podra ver, el autor del paquete, si el paquete se abre en BIDS en el
equipo en el que se desarrolló. En este caso, puede abrir el paquete y no tendrá que
volver a escribir las contraseñas de conexión, otros usuarios pueden abrir el paquete,
120 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
pero tienen que conocer las contraseñas de conexión para probar el paquete en BIDS.
Fuera del cuadro, solo las propiedades del paquete marcadas como sensibles son
conexiones con los nombres de usuario y contraseñas, sin embargo, si escribe una tarea
personalizada, componente o administrador de conexión, puede especificar las
propiedades que son sensibles.
La Tabla 4-2 resume las opciones de paquete ProtectionLevel disponibles.
Figura 4-4
Tabla 4-2 Opciones de Paquete ProtectionLevel
OPCION DESCRIPCION
DontSaveSensitive La información confidencial no se guarda en el paquete en absoluto. Cada
vez que se vuelve a abrir el paquete en BIDS, las contraseñas de conexión
deben ser reingresadas. Para la ejecución del paquete, la contraseña debe
ser almacenada en una configuración de paquetes o pasada al paquete
estableciéndola en la línea de comandos. Esta es la opción recomendada
si está utilizando exclusivamente la autenticación de Windows para las
conexiones.
EncriptAllWithPassword El paquete completo se cifra con una contraseña que se establece en la
propiedad PackagePassword. Para abrir el paquete en BIDS, es necesario
introducir la contraseña correcta del paquete y el paquete no se puede
ejecutar sin ingresar la contraseña al paquete en ejecución.
EncriptAllWithUserKey Todo el paquete está cifrado basado en el usuario actual y el ordenador.
Sólo el último usuario que diseñó o exportó el paquete puede diseñar o
ejecutar el paquete.
Un paquete no se puede abrir en BIDS a menos que sea abierto por el
usuario que lo desarrolló, en el equipo en el que lo desarrolló. El paquete
sólo puede ser ejecutado a través de la misma cuenta de usuario en el
mismo equipo.
EncriptSensitiveWithPassword La información confidencial en el paquete está cifrada basada en una
contraseña del paquete, que se encuentra en la propiedad
PackagePassword. Cada vez se vuelve a abrir el paquete, una contraseña
debe ser proporcionada. Si la contraseña no es proporcionada, el paquete
se abre, pero todos los datos confidenciales serán reemplazados con
espacios en blanco. Si un usuario intenta ejecutar el paquete sin una
contraseña, la ejecución fallará.
EncriptSensitiveWithUserKey La información confidencial (contraseñas de conexión) en el paquete está
cifrada basada en el usuario actual y el ordenador. Si el mismo usuario
vuelve a abrir el paquete, no se cambia nada. Si un usuario distinto abre el
paquete, toda la información confidencial se borra. Otros usuarios pueden
121 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
diseñar o ejecutar el paquete, pero necesitan introducir la contraseña o
pasar la contraseña en el paquete, a través de la línea de comandos o
configuraciones SSIS.
ServerStorage Este ajuste sólo se puede utilizar cuando un paquete se almacena en una
base de datos SQL Server. El Almacena-miento del servidor significa que
no hay nada en la definición del paquete que está cifrada. En cambio, el
paquete completo está protegido mediante un rol de base de datos SQL
Server. Esta opción no se admite cuando se guarda un paquete en el
sistema de archivos.
Si el cifrado está habilitado en el paquete mediante el uso de cualquiera de las opciones
ProtectionLevel, excepto ServerStorage y DontSaveSensitive, los datos cifrados se
guardan junto con el resto de la información del paquete en el archivo .dtsx. Si el paquete
está cifrado, todo el código XML en .dtsx está encriptado, y el XML no puede ser leído por
un editor de texto. SSIS cifra los datos utilizando el Microsoft Data Protection Application
Programming Interface (DPAPI).
TEMAS CLAVE
Si está implementando paquetes SSIS para un nuevo servidor, con la configuración
ProtectionLevel a EncryptSensitiveWithUserKey, algunas contraseñas de conexión en el
paquete no se pueden desencriptar, y la ejecución del paquete fallará. Esto se aplica
incluso si está usando las herramientas de implementación en SSIS y se ejecuta el
manifiesto de implementación en una computadora diferente, de la que los paquetes
fueron desarrollados.
Al elegir una configuración de paquete ProtectionLevel, considere los siguientes puntos
clave:
Si todas las conexiones utilizan la autenticación de Windows y, por tanto, no requieren
contraseñas, porque los usuarios se autentican a través de Windows, tiene
información confidencial en el paquete (con la excepción de un componente
personalizado que tiene confidencialidad definida). En esta situación, debe elegir
DontSaveSensitive porque no hay nada que se encripte. Su paquete puede ser
ejecutado en cualquier ordenador por cualquier usuario, siempre y cuando la cuenta
de Windows que ejecuta el paquete tenga los privilegios de seguridad apropiados,
para las conexiones.
La información confidencial no puede ser almacenada en texto plano en un archivo de
paquete almacenado en el sistema de archivos. Así que si tienes información
confidencial en un paquete, como una contraseña de conexión, tienes que utilizar una
configuración de SSIS para actualizar la contraseña de conexión en tiempo de
ejecución o ser capaz de desencriptar la contraseña, ya sea mediante el uso de la
contraseña del paquete o por la ejecución del paquete en el mismo equipo por la
misma cuenta de usuario. Al igual que en el almacenamiento de contraseñas de
conexión en una configuración SSIS, también puede pasar la contraseña de conexión
al paquete a través de la utilidad de línea de comandos DTExec.
Asignando una Contraseña de Paquete
Si elige nivel de protección EncryptSensitiveWithPassword o EncryptAllWithPassword, es
necesario establecer una contraseña del paquete. Puede asignar una contraseña del
paquete en la ventana Properties, cuando se accede a la ficha Control Flow del
Diseñador SSIS. Use la propiedad PackagePassword, ubicada encima del valor
ProtectionLevel, como se mostró anteriormente en la Figura 4-4. Para asignar una
contraseña, haga clic en el botón de puntos suspensivos junto al cuadro
PackagePassword para mostrar el cuadro de diálogo Property Editor donde se puede
escribir la contraseña dos veces.
Para cualquiera de estos niveles de protección, si se intenta ejecutar el paquete sin
introducir una contraseña válida, la ejecución fallará
122 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
NOTA: CONSECUENCIA DE ENCRIPTAR TODO
Si el paquete completo se encripta y se intenta ver el paquete en BIDS sin proporcionar
una contraseña válida, el paquete no se abre. Si sólo los datos sensibles son encriptados,
el paquete se abre, pero todos los datos sensibles serán reemplazados con espacios en
blanco.
MUNDO REAL
Diseñar una solución de extracción, transformación y carga (ETL) SSIS que necesita para
implementarlo a un servidor diferente; a veces puede ser una experiencia frustrante,
cuando se trabaja con la configuración de cifrado, especialmente porque las contraseñas
no pueden ser incluidas en el archivo del paquete en texto plano.
Particularmente cuando se trabaja en un ambiente de equipo, la configuración de cifrado
puede ser un reto, debido a que el nivel de protección predeterminado, es
EncryptSensitiveWithUserKey. Así que si quieres pasar el desarrollo de un paquete a otra
persona, esa persona vera un error la primera vez que él o ella trate de abrirla.
Mi estrategia favorita es la de crear un ambiente de configuración SSIS coherente en
todos los equipos que vayan a ejecutar los paquetes, ya sea en una estación de trabajo
de desarrollo, un servidor de desarrollo, un servidor de aseguramiento de la calidad (QA),
un servidor de prueba, o un equipo de producción. La configuración puede ser un archivo
XML o una entrada del registro, siempre y cuando se ha incluido las contraseñas para
cualquier conexión que no permite la autenticación de Windows. Con esta configuración
en su lugar, puede cambiar la configuración de ProtectionLevel a DontSaveSensitive para
todos los paquetes, y cuando se ejecuta el paquete, se pone la contraseña de la entrada
de configuración.
A algunas personas no les gusta este enfoque ya que la contraseña está disponible en
alguna parte. Pero el tema de fondo es que la contraseña tiene que ser almacenada en
alguna parte, y la ubicación de configuración que elija necesita un nivel extra de
seguridad, asi eso signifique poner restricciones de archivos en ella o bloquear la tabla de
SQL Server donde existan.
Administrando la Seguridad de Paquetes con DTUtil
El Capítulo 3 reviso las capacidades de la utilidad de línea de comandos DTUtil, para
realizar operaciones de implementación, como mover, copiar y verificar los paquetes. La
utilidad de línea de comandos DTUtil, también puede realizar operaciones de seguridad,
como encriptar un paquete y firmar digitalmente un paquete.
Para aplicar el cifrado a un paquete, puede utilizar el parámetro de línea de comando
/ENCRYPT con DTUtil. Este parámetro requiere la ubicación del paquete y el nivel de
cifrado en la cadena de parámetro y una contraseña de paquete si el cifrado lo requiere.
El nivel de cifrado es un indicador numérico relacionado con la propiedad EncryptionLevel
de un paquete, con la siguiente equivalencia:
0 = DontSaveSensitive
1 = EncryptSensitiveWithUserKey
2 = EncryptSensitiveWithPassword
3 = EncryptAllWithPassword
4 = EncryptAllWithUserKey
5 = SQLServerStorage
El siguiente ejemplo encripta MyPackage.dtsx con la contraseña EncPswd:
dtutil.exe /file MyPackage.dtsx /encrypt file;MyPackage.dtsx;3;EncPswd
Para firmar digitalmente un paquete, puede utilizar el parámetro de comando /SIGN, en
conjunción con la ubicación y el identificador de certificado hexadecimal. El siguiente
ejemplo firma un paquete llamado MyPackage, que se encuentra en la instancia local de
SQL Server:
123 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
dtutil.exe /SIGN SQL;MyPackage
PRACTICA: Encriptando un Paquete y Asignando Roles de Paquete
En el primer ejercicio de esta práctica, activará un paquete cifrado usando una
contraseña y luego verá cómo la seguridad afecta a la ejecución. En el segundo ejercicio,
va a cambiar los roles de seguridad para paquetes almacenados en SQL Server.
EJERCICIO 1: Activar Encriptacion de Paquete usando una Contraseña de
Paquete
En este ejercicio, establecerá el nivel de protección de un paquete a
EncryptAllWithPassword y luego establecera la propiedad PackagePassword.
1. Abra el proyecto SSIS que ha creado en los ejercicios, en el Capítulo 3. Editar el
paquete MyPackage.dtsx, y doble clic al paquete en el Solution Explorer.
2. En el Diseñador SSIS, haga clic en la ficha Control Flow y, luego, abra la ventana
Properties para el Control Flow. (una forma de abrir la ventana Properties es
presionar la tecla F4). En la ventana Properties, busque la propiedad ProtectionLevel,
y seleccione EncryptAllWithPassword en la lista desplegable.
3. Haga clic en la propiedad PackagePassword, a continuación, haga clic en el botón de
puntos suspensivos a la derecha de la propiedad. Cuando se le pida, escriba
EncPswd para la contraseña del paquete, vuelva a escribirla en el cuadro de texto
Confirm New Password y, a continuación, haga clic en OK para guardarla.
4. Guarde el paquete, y luego ciérrelo.
5. Haga doble clic en el paquete de nuevo del Solution Explorer. Cuando se le pida que
introduzca la contraseña del paquete, haga clic en Cancel. Usted recibirá un mensaje
de error indicando que el paquete no se puede abrir. Haga clic en OK. Entonces verá
un mensaje que dice Document contains one or more extremely long lines of text....
Esto es porque el contenido del paquete encriptado es visto como una larga línea de
texto. Haga clic en No.
6. Esta vez, intente abrir el paquete y tipee EncPswd cuando se le pida que introduzca
la contraseña del paquete. Haga clic en Yes en el cuadro de diálogo que dice
Document contains one or more extremely long lines of text.... Ahora el paquete se
abre en el Diseñador SSIS.
EJERCICIO 2: Cambiar Roles de Seguridad para Paquetes Almacenados en
SQL Server
En este ejercicio, trabajara con los roles MSDB para SSIS, primero importando un
paquete en el servicio SSIS y luego definiendo los roles de seguridad para el paquete.
Además, el paquete esta cifrado con una contraseña, y introducirá la contraseña del
paquete cuando el paquete es importado.
1. Abrir SSMS, y cuando se le pida conectarse a un servicio, cambie el tipo de servicio a
Integration Services y especifique localhost como el servidor. Si tiene problemas
para conectarse, asegúrese de que su SSIS y los servicios de SQL Server se han
iniciado.
2. Vaya a los Stored Packages, carpeta MSDB, a continuación, haga clic derecho en la
carpeta MSDB y seleccione Import Package.
a. En la lista desplegable Package Location, seleccione File System.
b. En el cuadro Package Path, escriba la ruta a MyPackage.dtsx en el sistema de
archivos o haga clic en el botón de puntos suspensivos para desplazarse a la
ubicación del paquete. Asegúrese de seleccionar el paquete exacto de los
ejercicios del proyecto.
c. Después de identificar la ruta del paquete, confirme que el cuadro de texto
Package Name se ajusta a MyPackage, y vea que el nivel de protección se
establece a Keep protection level of the original package.
124 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
d. Haga clic en OK para importar el paquete en la base de datos MSDB. Cuando se
le pida que introduzca la contraseña, tipee EncPswd, a continuación, haga clic en
OK de nuevo.
e. Si ha realizado los pasos de implementación del Capítulo 3, también se le pedirá
que sobrescriba el MyPackage existente. Haga clic en Yes.
3. Haga clic derecho en el paquete MyPackage que acaba de importar en la carpeta
MSDB, a continuación, seleccione Packages Roles.
4. Cambie de lista desplegable ReaderRole el valor a db_ssisadmin, que sólo permite a
usuarios que son miembros del role MSDB db_ssisadmin, ejecutar el paquete.
5. Haga clic en OK en el cuadro de diálogo Package Roles para aplicar el ajuste.
Verificación Rápida
1. ¿Puedo configurar la seguridad de un paquete, para que pueda almacenar una
contraseña en texto plano en el archivo referido .dtsx, en el sistema de archivos?
2. ¿Qué información almacenada en la definición del paquete, podría causar un riesgo
de seguridad si es encontrada?
3. Si su inicio de sesión de base de datos, se asigna al rol db_ssisoperator, que sólo
tiene acceso de lectura y no tiene acceso de escritura a un paquete almacenado en
MSDB, ¿Qué puede hacer con el paquete?
Respuestas de Verificación Rápida
1. No, la información confidencial, como contraseñas de conexión, no puede ser
almacenado como texto plano en el archivo del paquete, en el sistema de archivos. La
única manera de almacenar la contraseña de conexión en el archivo, es encriptar la
información confidencial establecimiendo ProtectionLevel a
EncryptSensitiveWithPassword o a EncryptSensitiveWithUserKey. Una mejor opción
es establecer el ProtectionLevel a DontSaveSensitive y utilizar una configuración
SSIS para almacenar la contraseña de conexión.
2. A pesar de que un archivo de paquete no contiene datos, contiene los detalles del
esquema acerca de las fuentes de entrada y destinos. Incluso si estos origenes y
destinos no pueden ser accesadas, esta información puede ser un riesgo para la
seguridad, ya que expone la tabla y los nombres de columna.
3. Debido a que se asigna el rol db_ssisoperator, puede ejecutar el paquete dentro de
MSDB, pero no se puede eliminar el paquete del almacén de datos MSDB o importar
paquetes dentro del almacen de datos.
125 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Puede encontrar más detalles sobre la ejecución programatica y el modelo de objetos en
la referencia Integration Services Class Library en el sitio web de MSDN o en los Libros
en Pantalla de SQL Server 2008.
El método de ejecución más común es a través de la línea de comandos. SSIS se
embarca con una utilidad de línea de comandos denominada DTExec, que puede ser
incrustado en cualquier otra línea de comandos de ejecución o herramienta de
programación, y una utilidad de línea de comandos UI denominada DTExecUI, que le
ayuda a construir la línea de comandos. Además, con SQL Server 2008, el SQL Server
Agent tiene compatibilidad para la ejecución de línea de comandos SSIS.
En esta lección, aprenderá cómo ejecutar paquetes a través de SSMS, SQL Server Agent
Jobs, Package Execution Utility (DTExecUI) y la herramienta de ejecución de línea de
comandos, DTExec.
Uso de DTExecUI para Configurar Ejecucion de Paquetes
El archivo ejecutable de línea de comandos DTExec, es una utilidad completamente
implementada con capacidades amplias de parametrización. Puede generar la línea de
comandos manualmente, por la aplicación de los parámetros del comando, para cumplir
con los requisitos de ejecución; pero para ahorrar tiempo y evitar errores, puede utilizar la
utilidad del constructor de línea de comandos denominada DTExecUI.
DTExecUI es una herramienta visual que, naturalmente agrupa las opciones de
parámetros de comando. El servidor en el que se ejecuta DTExecUI, debe tener SSIS
instalado. Para abrir DTExecUI, tipee DTExecUI ya sea desde el prompt de comando, o
seleccionando Start y luego Run para abrir el cuadro de diálogo Run. Puede abrir la
herramienta desde el cuadro de diálogo Run o desde el prompt de comando sin
especificar la ruta. La Figura 4-5, muestra la herramienta DTExecUI, que agrupa a los
parámetros de comando, en el panel izquierdo.
Para utilizar DTExecUI, siga estos pasos:
1. Abra la Execute Package Utility mediante la ejecución de DTExecUI bien, por
seleccionar Inicio y luego en la casilla Run, entrar DTExecUI.exe en el cuadro de
diálogo Run, o a través de un prompt de comando (Símbolo del sistema).
2. En la página de propiedades General, seleccione el paquete en ejecución, para que
pueda modificar una propiedad en las otras páginas. En la lista desplegable Package
Source, seleccione File System, SSIS Package Store o SQL Server, dependiendo de
dónde se encuentra su paquete.
3. Después de identificar la ubicación del paquete, seleccione el paquete específico para
su ejecución. Si el paquete se almacena en SQL Server o en el SSIS Package Store,
es necesario especificar los detalles de conexión al servidor SQL Server 2008,
proporcionando el nombre del servidor. SQL Server también requiere que provea un
nombre de usuario y contraseña o especificar Autenticación de Windows. Todas las
ubicaciones que elija, requieren que se especifique el paquete en la caja Package,
haciendo clic en el botón de puntos suspensivos a la derecha de la caja Package.
4. A continuación, tiene que especificar cómo el paquete debe ser ejecutado, por la
configuración de otras propiedades de ejecución del paquete. Seleccionando las
páginas de propiedades diferentes, a la izquierda desde Configurations hasta
Verification que permitirá anular configuraciones, como conexiones, registros, y
salidas. La Tabla 4-3 describe las opciones de configuración de ejecución.
126 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Figura 4-5
Tabla 4-3 Opciones de Configuracion de DTExecUI
PAGINA DESCRIPCION
General Como se describió anteriormente en los pasos 2 y 3, se puede especificar
la ubicación del paquete y el nombre en esta página de propiedades.
Configurations Además de las configuraciones ya definidas en el paquete, puede agregar
configuraciones XML a un paquete en tiempo de ejecución, a través de
esta página de propiedades. Estas configuraciones XML se añaden a las
configuraciones que existen actualmente en el paquete.
Command Files Los parámetros DTExec.exe se pueden almacenar en un archivo
separado, y las propiedades Command Files le permiten especificar el
archivo de texto que contendrá los parámetros.
Connection Managers Para el paquete seleccionado, las conexiones se pueden sobrescribir en
tiempo de ejecución con la nueva información de conexión. Seleccione las
conexiones a sobrescribir, y a continuación, modifique manualmente la
cadena de conexión.
Execution Options La página de propiedades Execution Options permite detalles avanzados
de ejecución, para la ejecución del paquete, incluyendo las siguientes:
Validate Package Without Executing
Maximum Concurrent Executables
Enable Package Checkpoints
Browse To Checkpoint File
Override Restart Options
Restart Options
Reporting Las propiedades Reporting definen la información que se devuelve a la
salida, de línea de comandos. Los eventos seleccionados determinan el
nivel de información que se devuelve.
Logging Los proveedores de registro se pueden añadir en tiempo de ejecución.
Set Values Las propiedades Set Values le permiten anular las propiedades del
paquete, incluyendo variables de paquete.
Verification En esta página de propiedades, establezca las opciones de verificación
que permiten a un paquete ejecutarse, usando lo siguiente:
Execute Only Signed Packages
Verify Package Build
Build
Verify Package ID
Package ID
Verify Version ID
127 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Version ID
Command Line La página propiedades Command Line muestra la línea de comandos que
se pasarán a DTExec. Todas las opciones que ha configurado en las otras
páginas de propiedades se presentaran en el texto de línea de comandos,
que puede editar de forma manual.
5. El paso final de la configuración es o bien ejecutar el paquete inmediatamente o
utilizar la salida de línea de comandos. Al hacer clic en Ejecutar inmediatamente se
ejecuta el paquete, que muestra detalles de la ejecución en una ventana separada,
similar a la ventana Execution Results en BIDS.
Por otra parte, seleccionando el contenido de la caja de texto Command Line en la
página de propiedades Command Line le permite copiar el resultado de salida de
parámetros de línea de comandos. A continuación, puede pegarlo en un archivo por
lotes, una herramienta de línea de comandos, o una ventana Command Prompt.
Asegúrese de usar el prefijo DTExec en la línea de ejecución. La Figura 4-6, muestra
la línea de propiedades Command Line de la interfaz DTExecUI.
Figura 4-6
La página de propiedades Set Values en DTExecUI le permite anular las propiedades del
paquete en tiempo de ejecución. La página tiene dos campos de entrada: Propery Path y
Value. Para rellenar la ruta de propiedad a una variable, es necesario utilizar la siguiente
sintaxis:
\Package.Variables[user::MyVariable].Value
Por ejemplo, si tuviera una variable de cadena llamada strUserName y quisiera
establecer el valor de DTExecUI, debe utilizar el siguiente valor para especificar la
Property Path en la página de propiedades Set Values:
\Package.Variables[user::strUserName].Value
En el cuadro de texto Value, escriba el nombre del usuario que desea asignar a la
variable strUserName cuando ejecute el paquete.
El resultado de establecer los detalles de ejecución a través de DTExecUI es una salida
de línea de comandos que se puede encontrar en la página de propiedades Command
Line de la utilidad DTExecUI y usar para los parámetros de línea de comandos con
DTExec.
Usando DTExec para Ejecucion de Paquetes
Puede ejecutar paquetes SSIS a través de cualquier utilidad de línea de comandos,
haciendo referencia al archivo ejecutable DTExec, en la utilidad de línea de comandos o
en un archivo por lotes. Como se describe en la sección anterior, "Uso de DTExecUI para
128 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Configurar la Ejecución de Paquetes," la utilidad DTExec viene con muchos parámetros
de línea de comandos. Los detalles de estos parámetros se encuentran fuera del alcance
de esta cobertura, pero aquí tenemos algunos ejemplos:
Para ejecutar un paquete SSIS guardado en SQL Server, con la autenticación de
Windows, utilice el siguiente código:
dtexec.exe /sql MyPackage /server SQLProd
Para ejecutar un paquete en el sistema de archivos, utilice el siguiente código:
dtexec.exe /file "c:\MyPackage.dtsx"
Para ejecutar un paquete que se ha guardado en el sistema de archivos con opciones
adicionales de registro, utilice el siguiente código:
dtexec.exe /f "c:\MyPackage.dtsx" /l
"DTS.LogProviderTextFile;c:\SSISlog.txt"
Para ejecutar un paquete almacenado en el sistema de archivos, pasándolo a un archivo
de configuraciónXML, ejecute el siguiente código:
dtexec.exe /f "c:\pkgOne.dtsx" /conf "c:\pkgOneConfig.cfg"
TEMAS CLAVE
Si ejecuta un paquete SSIS y desea crear un archivo de volcado de registro, si se
produce un error, puede utilizar el interruptor /DumpOnErr[or]. Esto es diferente del
interruptor /Dump, que crea el volcado, cuando ocurre un evento specificado.
Cuando un paquete se ejecuta desde la línea de comandos, el paquete siempre se
ejecutará desde el lugar que DTExec es ejecutado, no de la ubicación en la que se
almacena. Los Paquetes SSIS se pueden localizar en los archivos remotos compartidos o
SQL Servers remotos, pero el paquete se ejecutará desde donde la declaración DTExec
se encuentre.
Ejecutando Paquetes en SSMS con el Servicio SSIS
Como aprendió en la Lección 1, puede utilizar SSMS para conectarse al servicio SSIS. El
servicio SSIS le da la capacidad de administrar y asegurar los paquetes almacenados en
SQL Server. Además de proporcionar la seguridad, el servicio SSIS también le permite
ejecutar los paquetes manualmente, cuando se está conectado a SSIS y al servicio
SSMS.
Para ejecutar un paquete manualmente en SSMS, siga estos pasos:
1. Conectarse al servicio SSIS de SSMS, y busque el paquete que desea ejecutar, ya
sea en la carpeta File System (el almacén de paquetes) o en la carpeta MSDB.
2. Haga clic derecho en el paquete, y luego seleccione Run Package, como se mostró
anteriormente en la Figura 4-2.
En este punto, SSMS abrirá la utilidad DTExecUI. DTExecUI será preconfigurado con la
información de la ubicación del paquete, en la página de propiedades General de la
herramienta, y puede configurar las otras páginas de propiedades como se describió
anteriormente. Se ejecuta el paquete haciendo clic en el botón Execute en la parte inferior
de la interfaz DTExecUI. La carpeta Running Packages en SSMS mostrará todos los
paquetes actuales en ejecución en el servicio SSIS.
Creando SQL Server Agent Jobs para Ejecutar Paquetes SSIS
El Agente SQL Server es un servicio de Windows, que puede programar y ejecutar
trabajos de la misma manera que lo hacen otras herramientas de programación. Puede
programar estos trabajos para que se ejecuten en un horario específico o en respuesta a
un evento específico, o puede ejecutar el trabajo manualmente. Cada trabajo SQL Server
Agent puede tener uno o más pasos.
Después de que el servicio Agente SQL Server se ha iniciado, siga estos pasos para
crear un nuevo trabajo que programa y ejecuta paquetes:
129 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
1. Abrir SSMS, y luego conectarse a la instancia de base de datos SQL Server, donde
se inicia el SQL Server Agent. La gestión de SQL Server Agent se inserta en la
conexión del motor de base de datos del Explorador de objetos en el SSMS.
2. Dentro de la ventana Object Explorer, expanda la instancia de base de datos SQL
Server a continuación, expanda SQL Server Agent, como muestra la Figura 4-7.
Figura 4-7
MEJORES PRÁCTICAS: ACTIVAR SQL SERVER AGENT
Por defecto, el servicio SQL Server Agent está deshabilitada. Para habilitar e iniciar el
SQL Server Agent, use el SQL Server Configuration Manager pora modificar las
propiedades del servicio, en el contenedor SQL Server 2008 Services. El servicio SQL
Server Agent depende del servicio SQL Server, que es el servicio Database Engine.
Para programar un paquete SSIS, es necesario crear un nuevo paso, en un Job de SQL
Server Agent.
1. Crear un nuevo Job, dando clic derecho en la carpeta Jobs en el Object Explorer, y
luego seleccione New Job. Indique un nombre descriptivo para el trabajo en el cuadro
Name, para que el trabajo se pueda identificar entre los otros trabajos.
2. En Select a page, seleccione la pestaña Steps, en la ventana New Job, haga clic en
New para abrir la ventana New Job Step. Este paso es el que se configura para
ejecutar un paquete, asi que necesita introducir un nombre que describe el paso de
trabajo.
3. En la lista desplegable Type, seleccione SQL Server Integration Services, para
actualizar la interfaz para el resto de la ventana, personalizándolo para la ejecución
de un paquete SSIS. La Figura 4-8, muestra la ventana New Job Step configurado
para ejecutar un paquete SSIS.
4. Tenga en cuenta que en este momento, la ventana New Job Step utiliza la interfaz
DTExecUI, se puede establecer las mismas opciones que se establecieron en
DTExecUI. Antes de configurar las otras propiedades, seleccione el paquete que se
ejecutará mediante la selección de las fuentes del paquete (SQL Server, File System,
o SSIS Package Store) y luego seleccionar el paquete.
5. Después de haber configurado las opciones, haga clic en OK en la ventana New Job
Step para volver a la ventana New Job. A partir de aquí, se puede definir un
cronograma en la página de propiedades Schedules, así como establecer alertas y
notificaciones para la ejecución del paquete.
Puede programar trabajos de SQL Server Agent para ejecutarlos, a través de una
programación periódica, o provocar que se ejecuten en los eventos de otro servidor,
cuando el servicio está inactivo o cuando se inicia el servicio. La siguiente lista define sus
opciones de programación para un trabajo de SQL Server Agent:
130 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Recurring Configura la ejecución del trabajo diariamente, semanalmente o
mensualmente como lo definió en la interfaz de programación.
One Time Programa la ejecución del trabajo sólo una vez, en una fecha y hora
predefinido.
Start Automatically When SQL Server Agents Stars Configura que el trabajo se
ejecute cuando el SQL Server y los servicios de SQL Server Agent se inicien.
Start Whenever The CPUs Become Idle Basada en una inactividad predefinida,
programa un trabajo para ejecutar un paquete, en momentos de inactividad.
Puede configurar notificaciones, como el envío de mensajes de e-mail o escribir eventos
de registro, para correr cuando un paquete falla, se completa, o tiene éxito.
Figura 4-8
IMPORTANTE SQL SERVER AGENT O CUENTA PROXY
Cualquier trabajo programado en SQL Server Agent, se ejecuta bajo la cuenta, a la cual
esta conectado el SQL Server Agent. Por defecto, es Local System. (Esta cuenta está
configurada en el SQL Server Configuration Manager). Si el paquete esta configurado
para usar la autenticación Windows y no se han establecido configuraciones, el usuario
necesitará permisos para realizar cada tarea de base de datos en el paquete.
PRACTICA Ejecutar Paquetes usando DTExecUI, DTExec, y SQL Server
Agent
En estos ejercicios de práctica, va a utilizar DTExecUI para crear una sentencia de línea
de comandos que ejecute el paquete SSIS, cargado en SQL Server en la Lección 1.
Luego, ejecutará el paquete desde la línea de comandos. También se programa un
paquete para ser ejecutado con el SQL Server Agent.
EJERCICIO 1 Crear y Ejecutar una Sentencia de Linea de Comando
En este ejercicio, va a utilizar la Execute Package Utility, DTExecUI, para construir los
interruptores de los parámetros de línea de comandos, que luego serán utilizados con
DTExec para ejecutar un paquete, desde la línea de comandos.
1. En el menú Inicio, en la casilla Run, escriba DTExecUI.exe y dele Enter.
2. Con la Package Source establecido a SQL Server, escriba (local) en el cuadro
Server, y luego confirmar que la opción Use Windows Authentication está
seleccionada como la opción log on to the server.
131 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
3. Haga clic en el botón de puntos suspensivos a la derecha de la caja Package, y luego
seleccione MyPackage de la carpeta SSIS Packages. Haga clic en OK para cerrar el
cuadro de dialogo Select an SSIS Package y entrará automáticamente \MyPackage
en el cuadro Package.
4. Haga clic en la página de propiedades Reporting en el panel izquierdo y, si ha
completado la Lección 1 de este capítulo, se le pedirá que introduzca la contraseña
del paquete. Tipee EncPswd, y haga clic en OK. En la página de propiedades
Reporting, seleccione la casilla de verificación Verbose en el área Console Events.
5. Seleccione la página de propiedades Command Line en el panel izquierdo.
6. En la página de propiedades Command Line, seleccione los parámetros de línea de
comandos, haga clic derecho en el texto seleccionado y, seleccione Copy.
7. Abra una ventana Command Prompt; seleccione Inicio y luego en Run, escriba
cmd.exe y, luego dele Enter.
8. En el prompt del sistema, escriba DTExec (añadiendo un espacio al final), haga clic
derecho donde el cursor esta parpadeando, y luego seleccione Paste. Su línea de
comandos debe coincidir con lo siguiente:
dtexec.exe /SQL "\MyPackage" /SERVER "(local)" /DECRYPT /CHECKPOINTING
OFF /REPORTING V
9. Antes de ejecutar la sentencia, agregar la contraseña del paquete después de la línea
/DECRYPT. Incluya la contraseña entre comillas, y su sentencia debe tener el
siguiente aspecto:
dtexec.exe /SQL "\MyPackage" /SERVER "(local)" /DECRYPT "EncPswd"
/CHECKPOINTING OFF /REPORTING V
10. Pulse Enter para ver la ejecución del paquete de línea de comandos. Si se muestra el
cuadro de mensaje Script Task Ran, haga clic en Aceptar.
EJERCICIO 2 Ejecutar un Paquete a través del SQL Server Agent
En este segundo ejercicio, creará un trabajo SQL Agent que ejecuta un paquete SSIS. El
paquete que se usará es DimCustomer.dtsx
1. En SSMS, conectarse a la instancia local Database Engine.
2. En el Object Explorer, expanda SQL Server Agent, haga clic derecho en la carpeta
Jobs, y luego seleccione New Job.
3. En el cuadro Name, escriba Ejecucion Diaria DimCustomer y, a continuación
seleccione Steps en la lista de la página de propiedades, en el panel izquierdo.
4. Haga clic en New en la parte inferior de la página de propiedades Steps.
a. En el cuadro Step Name, escriba DimCustomer.
b. En la lista desplegable Type, seleccione SQL Server Integration Services
Package.
c. En la ficha General en la parte inferior de la ventana New Job Step, confirme que
SQL Server se define como el Package Source, y tipee (local) en el cuadro
Server.
d. Haga clic en el botón de puntos suspensivos a la derecha de la caja Package,
seleccione DimCustomer de la lista, luego haga clic en OK. (El paquete
DimCustomer fue implementado a SQL Server en los ejercicios del Capítulo 3).
e. Haga clic en OK en la ventana New Job Step.
5. Seleccione la página de propiedades Schedules, a continuación, haga clic en New
para crear un nuevo calendario.
a. En la ventana New Job Schedule, tipee Diariamente para el nombre de la
programación.
132 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
b. Deje Recurring en la lista desplegable Schedule Type, y cambie la lista
desplegable Occurs seleccionando Daily.
c. Cambie el cuadro Occurs Once At a 8:00:00 AM, y luego haga clic en OK en la
ventana New Job Schedule.
6. En la ventana New Job, haga clic en OK para completar la creación de nuevos
trabajos y ejecute el paquete a las 8:00 todas las mañanas.
7. Tenga en cuenta que en el Explorador de objetos, en SQL Agent Job, el trabajo Daily
DimCustomer Execution esta listado. Puede iniciar manualmente el trabajo dándole
clic derecho y seleccionando Start Job at Step.
Verificación Rápida
1. ¿Cuáles son las ventajas y desventajas de almacenar paquetes en SQL Server?
2. ¿Se puede programar paquetes para ejecutar a través de SQL Server Agent si tiene
el valor de EncryptSensitiveWithUserKey o EncryptAllWithUserKey seleccionado para
la propiedad ProtectionLevel?
3. ¿Si tiene un paquete para el cual una variable debería ser actualizada al inicio de la
ejecución, qué métodos tenemos disponibles?
Respuestas de Verificación Rápida
1. Cuando los paquetes son almacenados o desplegados en SQL Server, puede hacer
un backup de la base de datos del sistema MSDB. Además, cuando los paquetes
residen en SQL Server, puede asignar roles de paquetes para gestionar la seguridad.
Sin embargo, los paquetes almacenados en la base de datos MSDB requieren más
manejo que los paquetes que no se almacenan allí. Por ejemplo, para modificar los
paquetes almacenados en la base de datos, tiene que exportarlos y luego
reimportarlos a SQL Server.
2. Un paquete puede ser ejecutado a través de SQL Server Agent, con la clave de
usuario de cifrado sólo si el paquete se ejecuta en el servidor, en el que fue creado y
por el usuario que lo creó. Si ProtectionLevel está establecido en
EncryptSensitiveWithUserKey y se utiliza autenticación de Windows para la conexión,
un paquete se puede ejecutar en un servidor diferente o por un usuario diferente, pero
una advertencia será devuelta.
3. Las variables se pueden actualizar en ejecución mediante el uso de una configuración
o usando el parámetro de línea de comandos Set Value, donde se escribe la ruta de
la propiedad como \Package.Variables[user::strUserName].Value y el valor es
pasado.
Escenario Posible: Seguridad y Programacion de Paquetes SSIS
Sus paquetes ETL SSIS se han desplegado a SQL Server, y ahora es responsabilidad
del administrador de base de datos (DBA), asegurar y programar los paquetes para su
ejecución en el servidor de producción. Una de las referencias de conexiones
compartidas de un sistema de base de datos existente requiere un nombre de usuario y
contraseña. Por lo tanto, una configuración de SQL Server se ha creado para administrar
el nombre de usuario y contraseña, y para compartirlas entre los paquetes. Su tarea es
asegurar los paquetes y el calendario para su ejecución, teniendo en cuenta los
siguientes requisitos:
1. Los paquetes contienen información de esquema relacionados a una base de datos
financiera, por lo que necesita asegurarse que los paquetes están encriptados.
También es necesario asegurarse de que la contraseña de conexión compartida en la
tabla de configuración de SQL Server es segura.
2. Los paquetes deben ser programados para ejecutarse a las 8:00 todas las mañanas
usando SQL Server Agent.
133 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.
Resumen del Capitulo
El servicio SSIS ayuda en la gestión y seguridad de los paquetes SSIS desplegados
en SQL Server. Puede incluir este servicio en una instalación de clúster de Windows,
según sea necesario.
Al importar o implementar paquetes en SQL Server, puede asegurarlos mediante el
uso de los roles MSDB.
Mediante el uso de la configuración de paquete ProtectionLevel, puede cifrar los
paquetes con una contraseña o una cuenta de usuario y servidor. Puede cifrar el
paquete completo o sólo la información sensible en el paquete.
Además de proporcionar capacidades de implementación de paquete, DTUtil también
puede establecer la configuración de cifrado y firmas digitales de los paquetes a
través de scripts de línea de comandos.
La utilidad de línea de comandos DTExecUI proporciona una interfaz de usuario que
construye comandos de ejecución de línea de comandos.
La utilidad de línea de comandos El DTExec puede hacer referencia y ejecutar un
paquete, dándole varios parámetros para el control de la ejecución, como el cambio
de conexiones, configuración de las opciones de registro, y la aplicación de los
archivos de configuración.
Los Paquetes se pueden cargar en SQL Server y ser ejecutados en SSMS
conectándolos al servicio SSIS.
SQL Server Agent ofrece la posibilidad de programar paquetes para su ejecución.
134 Traducción de Training Kit (Exam 70-448) y personalización a SQL Server 2008 R2
Narcizo D.Hinojosa Chirinos.