You are on page 1of 29

Integration Services (ISP)

Laboratorio
Universidad Cesar Vallejo Escuela de Postgrado
Docente. MBA. Ing. Aldo Vela, PMP

INDICE
I.

Creando un proyecto.............................................................................................................. 3

II.

Generando las conexiones en el ISP...................................................................................... 5

III.

Agregando Control Flow......................................................................................................... 7

IV.

Ejecucin del Dtsx................................................................................................................. 20

V.

Cargando un archivo a la BD ................................................................................................ 21

VI.

Creando el entorno de trabajo............................................................................................. 27

Inteligencia de Negocios | Integration Services

I.

Creando un proyecto
1. Ir a inicio y ubicar el programa Microsoft SQL Server 2008 r2, luego seleccionar SQL Server
Business Intelligence Development. (ver imagen adjunta)

2. Luego proceder a crear un proyecto ISP con el Visual Studio, de la siguiente manera

Inteligencia de Negocios | Integration Services

3. Una vez creado el proyecto, el entorno de trabajo ser como se muestra a continuacin.

Inteligencia de Negocios | Integration Services

II.

Generando las conexiones en el ISP


1. Posicionarse en la seccin de Connection Managers y darle clic derecho. Ah seleccionar
las conexiones indicadas en los pasos 2 y 3.

2. Crear dos conexiones OLE DB Conexin:


a. SDA Seguridad Integrada

Inteligencia de Negocios | Integration Services

b. Adventure Work Con un usuario de SQL

3. Crear una conexin Flat File Conexin

Inteligencia de Negocios | Integration Services

III.

Agregando Control Flow

1. Ir al Tool box y arrastrar el control Conteiner al Controlflow, de la siguiente manera

2. Crear variables, haciendo click derecho en el panel del trabajo

Inteligencia de Negocios | Integration Services

3. Crear todas las variables de acuerdo a la imagen adjunta.

4. Jalar el control Script Task y renombrarlo por Cargar Cadena SDA, elegir como lenguage
Visual Basic 2008.
NOTA: elegirlo antes de editar el script, debido a que luego no se podr cambiar el
lenguaje.
5. Editar el control Cargar Cadena SDA de la siguiente manera

Inteligencia de Negocios | Integration Services

6. Hacer doble click el control Cargar Cadena SDA y luego a edit script, para colocar el
siguiente codigo en el funcion main
Public Sub Main()
Dim strServerName As String
' Add your code here
'
Dim strServerName As String
strServerName = Dts.Variables("gServerSda").Value.ToString
Dts.Connections("SDA").ConnectionString =
"Provider=SQLNCLI10;Server=" & strServerName & ";Database=SDA;Integrated
Security=SSPI;Auto Translate=False;"
Dts.TaskResult = ScriptResults.Success
End Sub

7. Jalar el control Execute SQL Task y renombrarlo por Leer Variables elegir como lenguage
Visual Basic 2008.
8. Editar el control Leer Variables de la siguiente manera
a. En SQLStament colocar EXEC dbo.up_ObtieneParametros_Sel 'AW', ?

Inteligencia de Negocios | Integration Services

b. Parameter Mapping

Nota: la variable es gAmbiente

Inteligencia de Negocios | Integration Services

10

c. En Resul Set

9. Jalar el control Script Task y renombrarlo por Cargar Variables, elegir como lenguage
Visual Basic 2008.
10. Editar el control Cargar Variables de la siguiente manera

Nota en ReadwriteVariables debe de ir SrvInput,PathSend,Instancia,Usuario,Pass


Inteligencia de Negocios | Integration Services

11

11. En el main de cargar variables colocar


i.
Librerias
Imports
Imports
Imports
Imports
Imports

ii.

System
System.Data
System.Math
Microsoft.SqlServer.Dts.Runtime
System.Data.OleDb

En el main

Public Sub Main()


'---------------------------------------------------------------' Finalidad
: Funcion para cargar en Variables Globales
'
los parametros a utilizar este Dts.
' Parmetros
:
'
' Resultados
: Ninguno
' Modificacin :
'---------------------------------------------------------------Dim rstData As New DataTable
Dim strSvrInput As String
Dim strPathSend As String
Dim strInstancia As String
Dim strUsuario As String
Dim strPass As String
Dim oleDA As New OleDbDataAdapter
oleDA.Fill(rstData, Dts.Variables("rst").Value)

For i As Integer = 0 To rstData.Rows.Count - 1


Select Case UCase(Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(0)),
Nothing, rstData.Rows(i)(0)))))
Case "SRVINPUT"
strSvrInput =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("SrvInput").Value = strSvrInput
Case "PATHSEND"
strPathSend =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("PathSend").Value = strPathSend
Case "INSTANCIA"
strInstancia =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("Instancia").Value = strInstancia
Case "USUARIO"

Inteligencia de Negocios | Integration Services

12

strUsuario =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("Usuario").Value = strUsuario
Case "PASS"
strPass = Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)),
Nothing, rstData.Rows(i)(2))))
Dts.Variables("Pass").Value = strPass
End Select
Next
Dts.TaskResult = ScriptResults.Success
End Sub

12. Jalar el control Script Task y renombrarlo por Setear Ruta de Archivos a carga, elegir como
lenguage Visual Basic 2008.
13. Editar el control Setear Ruta de Archivos a carga de la siguiente manera

Nota: en ReadOnlyVarible colocar


SrvInput,PathSend,Instancia,Usuario,Pass,gAmbiente

Inteligencia de Negocios | Integration Services

13

14. Editar el Script y colocar :


i. Librera:
Imports
Imports
Imports
Imports
Imports
Imports
Imports
iii.

System
System.Data
System.Math
Microsoft.SqlServer.Dts.Runtime
System.Data.SqlClient
System.Collections
System.IO

En el Main

Dim strCadenaSQL As String


Dim strSrvData As String
Dim strPass As String
Dim strUser As String
Dim SrvInput As String
Dim PathSend As String
Dim strArchivo As String
Public Sub Main()
strSrvData = CStr(Dts.Variables("Instancia").Value)
strUser = CStr(Dts.Variables("Usuario").Value)
strPass = CStr(Dts.Variables("Pass").Value)
SrvInput = CStr(Dts.Variables("SrvInput").Value)
PathSend = CStr(Dts.Variables("PathSend").Value)
MsgBox(SrvInput)
strArchivo = "Producto"
strCadenaSQL = "Provider=SQLNCLI10.1;Data Source=" + SrvInput +
";Initial Catalog = " + strSrvData + ";User ID=" + strUser + ";Password="
+ strPass + ";"
MsgBox(strCadenaSQL)
Dts.Connections("AdventureWork").ConnectionString = strCadenaSQL
Dts.Variables("FileProducto").Value = PathSend + strArchivo +
".TXT"
End Sub

15. Por ultimo jalar el control Data Flow Task y llamarlo Genera Archivo de texto, luego hacer
doble click sobre el control.
16. En el Data Flow, jalar dos controles.
a. Ole DB Source y relacionarlo con la conexin AdventureWork
i. Seleccionar el como acces mode SQL Command
ii. Colocar en SQL Command Text , lo siguiente
select
ProductID ,
Name ,
Inteligencia de Negocios | Integration Services

14

ProductNumber ,
MakeFlag,
FinishedGoodsFlag ,
Color
,
SafetyStockLevel ,
ReorderPoint ,
StandardCost ,
ListPrice ,
Size ,
SizeUnitMeasureCode ,
WeightUnitMeasureCode,
Weight,
DaysToManufacture,
ProductLine,
Class ,
Style ,
ProductSubcategoryID ,
ProductModelID ,
SellStartDate ,
SellEndDate ,
DiscontinuedDate
rowguid ,
ModifiedDate
from Production.Product

b. Flat File Destination


i. Usar la conexin FileProducto
ii. Mapear los campos que sean necesarios.

Inteligencia de Negocios | Integration Services

15

17. El DTSx quedara de la siguiente manera:

Inteligencia de Negocios | Integration Services

16

18. Para hacer dinmica la ruta del archivo deber hacer lo siguiente:
a. Ir a la conexin del archivo(FileProducto) y darle click derecho y luego ir a
propiedades:

b. En las propiedades ir a Expressions y darle click en botn

Inteligencia de Negocios | Integration Services

17

c. Luego ir a la propiedad ConnectionString de la siguiente manera:

d. Luego en expressions, darle click en el botn

Inteligencia de Negocios | Integration Services

18

e. Expandir las variables y ubicar FileProducto, luego arrastrarlo a la parte de


expressions

f.

Por Ultimo darle Ok.

19. Con la finalidad de que el paquete tenga un nombre mas acorde con su funcin se lo edita,
dndole F2 en Package.dtsx y cambiando el nombre a AW_EnvioData.dtsx

Inteligencia de Negocios | Integration Services

19

IV.

Ejecucin del Dtsx

1. Abrir una consola MS-DOS y colocar las siguiente instruccin para ejecutar el Dtsx creado:
dtexec /F "\\avelabxp\temp\DTSx\AW_EnvioData.dtsx" /SET \package.variables[User::gAmbiente].Value;1
/SET \package.variables[User::gServerSda].Value;"avelabxp\sql2008"

Nota: Validar que la ruta a colocar sea la misma donde Ud. grabo su proyecto.
2. Proceder a crear un archivo con extensin Bat, donde colocara la misma instruccin del
paso anterior.

1.
2.
3.
4.

Comando de ejecucin del dtsx(validar que sea las misma versin)


Ruta donde se encuentra fsicamente el archivo dtsx
Variable de entrada -> Ambiente
Variable de entrada -> Servidor

Inteligencia de Negocios | Integration Services

20

V.

Cargando un archivo a la BD
1. Crear un nuevo DTSx de la siguiente manera:

2. Validar que se haya creado el usuario y la base de datos Migracion en caso contrario
ejecutar lo siguiente:
--Creacion del usuario para la base de datos de migracion
CREATE LOGIN migracion
WITH PASSWORD = 'migracion123';
GO
USE Migracion;
exec sp_changedbowner 'migracion'
GO
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('MI','Migracion','1','SrvInput','avelabxp\sql2008')
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values
('MI','Migracion',1,'PathRecive','\\avelabxp\temp\sql2008\');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('MI','Migracion',1,'Instancia','Migracion');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('MI','Migracion',1,'Usuario','migracion');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('MI','Migracion',1,'Pass','migracion123');

Inteligencia de Negocios | Integration Services

21

go

3. Crear las siguientes nuevas conexiones:


a. A la base de Datos del SDA

b. A la Base de Datos de Migracion(repositorio destino)

Inteligencia de Negocios | Integration Services

22

c. Al Archivo plano Producto

4. La variables a Crear sern:

Nota:
En todos los STEP en lo que en el primer ejemplo del DTSx se llame a PathSend
cambiarlo por PathRecive

Inteligencia de Negocios | Integration Services

23

5. Los step del nuevo Dtsx sern:

a. Step Cargar Cadena SDA igual que el primer DTSx creado.


b. Step Leer Variables igual que el primer DTSx y el SP a llamar ser EXEC
dbo.up_ObtieneParametros_Sel 'MI', ?
c. Step Cargar Variables, tendr como main lo siguiente

Public Sub Main()


'----------------------------------------------------------------------------------------' Finalidad
: Funcion para cargar en Variables Globales
'
los parametros a utilizar este Dts.
' Parmetros
:
'
' Resultados
: Ninguno
' Modificacin :
'----------------------------------------------------------------------------------------Dim rstData As New DataTable
Dim strSvrInput As String
Dim strPathRecive As String
Dim strInstancia As String
Dim strUsuario As String

Inteligencia de Negocios | Integration Services

24

Dim strPass As String


Dim oleDA As New OleDbDataAdapter
oleDA.Fill(rstData, Dts.Variables("rst").Value)

For i As Integer = 0 To rstData.Rows.Count - 1


Select Case UCase(Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(0)),
Nothing, rstData.Rows(i)(0)))))
Case "SRVINPUT"
strSvrInput =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("SrvInput").Value = strSvrInput
Case "PATHRECIVE"
strPathRecive =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("PathRecive").Value = strPathRecive
Case "INSTANCIA"
strInstancia =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("Instancia").Value = strInstancia
Case "USUARIO"
strUsuario =
Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)), Nothing,
rstData.Rows(i)(2))))
Dts.Variables("Usuario").Value = strUsuario
Case "PASS"
strPass = Trim(CStr(IIf(IsDBNull(rstData.Rows(i)(2)),
Nothing, rstData.Rows(i)(2))))
Dts.Variables("Pass").Value = strPass
End Select
Next
'MsgBox(strUsuario)
'MsgBox(strPass)
Dts.TaskResult = ScriptResults.Success
End Sub

d. Step Setear Ruta de Archivo a Cargar, contendr en el main:


Dim
Dim
Dim
Dim

strCadenaSQL As String
strSrvData As String
strPass As String
strUser As String

Inteligencia de Negocios | Integration Services

25

Dim SrvInput As String


Dim PathRecive As String
Dim strArchivo As String
Public Sub Main()
strSrvData = CStr(Dts.Variables("Instancia").Value)
strUser = CStr(Dts.Variables("Usuario").Value)
strPass = CStr(Dts.Variables("Pass").Value)
SrvInput = CStr(Dts.Variables("SrvInput").Value)
PathRecive = (CStr(Dts.Variables("PathRecive").Value))
'MsgBox(SrvInput)
strArchivo = "Producto"
strCadenaSQL = "Provider=SQLNCLI10.1;Data Source=" + SrvInput +
";Initial Catalog = " + strSrvData + ";User ID=" + strUser + ";Password="
+ strPass + ";"
MsgBox(strCadenaSQL)
Dts.Connections("Migracion").ConnectionString = strCadenaSQL
Dts.Variables("ConexionSQL").Value = strCadenaSQL
'MsgBox(PathSend + strArchivo + ".TXT")
Dts.Variables("FileProducto").Value = PathRecive + strArchivo +
".TXT"
'MsgBox(Dts.Variables("PathSend").Value)
End Sub

e. Step Cargar Archivo, debera tener lo siguiente:

1.
2.

Flat File Source, con conexin al archivo plano


OLE DB Destination, con conexin a la BD Migracion
a. En la base de datos migracin previamente deber haber creado la tabla
producto en donde se cargara el archivo plano.

Inteligencia de Negocios | Integration Services

26

VI.

Creando el entorno de trabajo

1. Crear una carpeta SDA en Windows


2. Crear una carpeta Migracion en Windows
3. Crear una carpeta Compartido en Windows y dar permisos de lectura y escritura a todos
los usuarios
4. Dentro de la carpeta Compartido crear dos carpetas PathRecive y PathSend
5. Ejecutar paso a paso las siguientes sentencias:
--Creacion de la BD de Seguridad
USE master ;
GO
CREATE DATABASE SDA
ON
( NAME = SDA_dat,
FILENAME = 'D:\SQL2008r2\BaseDatos\SDA\SDA_dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = SDA_log,
FILENAME = 'D:\SQL2008r2\BaseDatos\SDA\SDA_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
--Creacion del usuario para la base de datos de seguridad
CREATE LOGIN sda
WITH PASSWORD = 'sda123';
USE SDA;
exec sp_changedbowner 'sda';
GO
--Creacion de Tabla
Create table dbo.ACCESO(
CODIGOAPLICATIVO varchar(10),
NOMBREAPLICATIVO varchar(30),
AMBIENTE char(1),
VARIABLE varchar(100),
VALOR varchar(100)
);
go
--Carga de Datos
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('AW','AdventureWorks','1','SrvInput','avelaw7\sql2008r2')
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values
('AW','AdventureWorks',1,'PathSend','\\avelaw7\Compartir\PathSend\');

Inteligencia de Negocios | Integration Services

27

insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('AW','AdventureWorks',1,'Instancia','AdventureWorks2008R2');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('AW','AdventureWorks',1,'Usuario','adventure');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('AW','AdventureWorks',1,'Pass','adventure123');
go
--Carga de Datos
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('sda','Sistema de Seguridad',1,'SrvInput','avelaw7\sql2008r2');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('sda','Sistema de
Seguridad',1,'PathRecive','\\avelaw7\Compartir\PathRecive\');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('sda','Sistema de Seguridad',1,'Instancia','SDA');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('sda','Sistema de Seguridad',1,'Usuario','sda');
insert into
ACCESO(CODIGOAPLICATIVO,NOMBREAPLICATIVO,AMBIENTE,VARIABLE,VALOR)
values ('sda','Sistema de Seguridad',1,'Pass','sda123');
go
--Crear SP
CREATE procedure dbo.up_ObtieneParametros_Sel
( @p_CODIGOAPLICATIVO VARCHAR(30),
@p_AMBIENTE VARCHAR(1)
)
as
SELECT A.VARIABLE,A.VALOR,A.VALOR FROM ACCESO A
WHERE A.CODIGOAPLICATIVO=@p_CODIGOAPLICATIVO
AND A.AMBIENTE =@p_AMBIENTE
go
--Creacion del usuario para la base de Adventure Works
CREATE LOGIN adventure
WITH PASSWORD = 'adventure123';
USE AdventureWorks2008R2;
exec sp_changedbowner 'adventure';
GO
--Creacion de la BD donde se grabaran los archivos planos
USE master ;
GO
CREATE DATABASE Migracion
ON
( NAME = Migracion_dat,
FILENAME = 'D:\SQL2008r2\BaseDatos\Migracion\Migracion_dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON

Inteligencia de Negocios | Integration Services

28

( NAME = Migracion_log,
FILENAME = 'D:\SQL2008r2\BaseDatos\Migracion\Migracion_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
--Creacion del usuario para la base de datos de seguridad
CREATE LOGIN migracion
WITH PASSWORD = 'migracion123';
USE Migracion;
exec sp_changedbowner 'migracion'
GO

Inteligencia de Negocios | Integration Services

29

You might also like