E ai meu amigo, voltei aqui!
Preciso fazer uma pergunta para você, ou melhor algumas perguntas. Mais antes de ouvir suas respostas vou contar uma historinha.
Imagina que na empresa que você trabalha atualmente os ambiente são divididos em Dev, Qas e Prd, onde toda melhoria, correção ou novo desenvolvimento tenha que ser iniciado em Dev, após concluído seja transportado para Qas e após a homologado seja aplicado em seu ambiente produtivo.
Lembrando que cada um desses ambientes possua um servidor, uma base de dados, usuário e senha apartados. E diante desse cenário descrito como que você faz para transportar seu desenvolvimento sem que nenhuma alteração de configuração (Servidor, banco, usuário e senha) precise ser feita antes de aplicar o pacote?
Sempre que avança pra um ambiente diferente você abre o pacote e altera os parâmetros de conexão?
Como que você define dentro do seu pacote suas credenciais?
Muito bem, o objetivo desse post é apresentar uma forma 100% parametrizada para que você não tenha que fazer essas configurações antes de aplicar os pacotes.
Vamos lá?
1 - Criando um Projeto no SQL Server Integration Services
Vou considerar que você não tem nenhum projeto criado no Visual Studio do SQL Server Integration Service. Um ponto bem importante desse estudo é que não irei falar como que você realiza a configuração do seu ambiente, entenderei que você já tenha feito isso em outro momento.
Para criar um projeto é bem simples. Vamos abrir o Visual Studio e seguir os próximos passos.
(1) Selecionar File;
(2) New;
(3) Project;
(4) Caso tenha um projeto criado basta clicar em Open Project.
Após clicar em New Project, a tela abaixo será apresentada.
(1) Escolher Integration Services;
(2) Integration Services Project;
(3) Informar um nome para o Projeto;
(4) Definir o local (diretório) que o projeto será gerado;
(5) Informar uma nomenclatura para a sua solução;
(6) Caso queira que um diretório para o projeto seja criado basta marcar essa opção;
(7) Clicar em OK para realizar a criação;
2 - Criando nosso Pacote de ETL
Primeiro ação será a criação de um pacote do SSIS. Essa criação é bem simples, acompanha comigo.
(1) Clicar com o botão direito do mouse sobre SSIS Package;
(2) Clicar em New SSIS Package;
Além dessa possibilidade, outras ações podem ser realizadas.
Importar um Arquivo dtsx - basta clicar em Add Existng Package;
Realizar o Upgrade dos seus pacotes - basta clicar sobre Convert Deployment Model ou Upgrade All Package;
Realizar um Import and Export - basta clicar sobre SSIS Import and Export Wizard;
Ordenar seus pacotes - basta clicar em Sort by name.
Após a criação do nosso arquivo dtsx, vamos para o desenho do nosso fluxo.
(1) Nome do arquivo dtsx;
Para alterar basta clicar sobre ele e apertar o botão F4 e em file name informar o nome do seu pacote.
Ou clicar sobre o pacote e apertar F2
(2) Aba Control Flow;
(3) Inserir um componente de Data Flow Task;
(4) Realizar duplo clique ou clicar em Data Flow.
3 - Criando as Conexões
Primeiro passo será realizar a configuração das nossas conexões.
Um dos principais objetivos desse post é justamente apresentar para você uma forma de você possuir toda a sua configuração de conexões e acesso a arquivos fora do seu processo de ETL, ou seja, caso você precise alterar o ambiente do tipo, estou desenvolvendo e estou no meu ambiente de DEV, agora que finalizei o desenvolvimento vou passar o meu processo para ser executado em meu ambiente de QAS e por último após o processo de homologação concluído preciso transportar para o ambiente produtivo.
Agora faço para você uma pergunta muito importante e crucial, como faremos esse transporte de ambientes sem precisar recompilar todo o seu projeto??
É bem simples a resposta, basta alterar o arquivo de configuração. Simples né! Agora acompanha comigo aqui como que podemos estar fazendo isso.
Nesse primeiro momento, vou fazer a criação das conexões todas sem parâmetros, e no decorrer do post vou ensinar como que você realizar a alteração para tornar seu projeto mais robusto!
Bora lá...
(1) Aba Connection Manage;
(2) Clicar com o botão direito do mouse e escolher New OLE DB Connection;
Na próxima tela vamos configurar a nossa conexão com Microsoft SQL Server informando o nome do servidor, banco, usuário, senha e etc.
Se você vem acompanhando esse blog, esse procedimento já está correndo na sua veia...
(1) Na aba Connection Manager, vamos clicar com o botão direito e selecionar OLE DB Connection Manager. Na tela que será apresentada, vamos clicar em New;
(2) Selecionar Native OLE DB\SQL Server Native Client 11.0;
(3) Informar o nome do servidor\instância;
(4) Selecionar o método de conexão;
(5) Selecionar o banco de dados. Clicando na setinha pra baixo é possível visualizar todos os bancos existentes em nosso servidor;
(6) Clicar em Test Connection para validar a conexão (Sempre comento que esse passo é desnecessário, pois ela já foi validada no passo anterior);
(7) Clicar em OK para finalizar.
Nesse primeiro passo, vamos ler e gravar os dados no mesmo servidor e banco, por isso vamos criar apenas uma conexão.
4 - Configurando o Fluxo de Dados
Nesse momento vamos iniciar a configuração do nosso fluxo de dados.
Primeiro passo será a parametrização da conexão com o nosso banco de dados. Vamos ver como fazer.
4.1 - Criando Variáveis
Na tela abaixo vamos realizar a criação de algumas variáveis que serão usadas no processo de parametrização das conexões.
A principio vamos definir 4 variáveis:
var_Servidor
var_Banco
var_Usuario
var_Senha
Antes de explicar cada uma delas vale uma observação!
Caso o tipo de conexão com o servidor de banco de dados tenha sido configurado para ser Windows Authentication, a variável var_Senha é descartada!
Vamos falar agora um pouco sobre essas variáveis.
var_Servidor - Essa variável é definida para receber a informação referente ao nome\instância ou ip\intância do servidor de banco de dados;
var_Banco - Essa variável será definida para receber o nome do banco de dados;
var_Usuario - Essa variável será definida para receber o usuário que será usado para conexão com o servidor de banco de dados;
var_Senha - Essa variável será definida para receber a senha do usuário.
Vamos seguir explicando o que fizemos! Acompanha aqui comigo...
(1) Clicar na aba Variables;
(2) Nome das variáveis criadas;
(3) Escopo que podemos aplicar a variável;
(4) Data type da variável;
(5) Valor que será definido para variável, vamos defini-las sem informar um valor, essa informação será recuperada do arquivo de configuração;
4.2 - Mapeando as Variáveis Criadas
Nesse passo, vamos "jogar" as variáveis criadas para um arquivo de configuração.
Esse arquivo será criado no formato dtsConfig e será um XML.
Vamos lá!
(1) Vamos clicar na aba Control Flow e após isso vamos clicar na área central do pacote e apertar o botão F4;
(2) Na aba Properties, vamos navegar até a sessão Msc e em Configurations, vamos clicar em (Collection) e em seguida no quadradinho que aparece;
(3) Na tela Package Configurations Organizer vamos clicar em Add;;
(4) E para avançar vamos clicar em Next.
Na próxima tela vamos definir onde o nosso arquivo de configuração será criado.
Acompanha ai...
(1) Clicar em Browser;
(2) Selecionar um diretório;
(3) Definir um nome para o arquivo de configuração;
(4) E clicar em Save para gravar.
Após salvar o arquivo, vamos iniciar a configuração.
(1) Local que o arquivo foi criado;
(2) Clicar em Next para definir as variáveis.;
Agora vamos procurar as quatro variáveis criadas e para ambas marcar a opção Value conforme imagem abaixo. Isso nós vamos fazer para as quatro!
(1) Busca na pasta Variables as variáveis criadas;
(2) Marcar a opção Value;
(3) Após fazer isso para todas as 4 vamos clicar em Next.
Chegamos no fim, para concluir vamos definir um nome para a configuração (1) e um resumo é apresentado (2).
Pronto! Arquivo criado, variáveis mapeadas, para finalizar vamos habilitar a opção Enable package configurations, feito isso basta clicar em Close.
E agora adivinhe o que vamos fazer? Não sabe? Então segue ai...
4.3 - Reconfigurando as Conexões - Usando Parâmetros
Depois que criamos as conexões, as variáveis, o arquivo de configuração e a associação das variáveis ao arquivo, o próximo passo é parametrizar a conexão.
Vamos fazer? Bora lá então...
(1) Clicar sobre a conexão criada e apertar o botão F4;
(2) Na aba Properties vamos navegar até a sessão Msc, clicar em Expressions e por último clicar no quadradinho que tem no canto;
(3) Feito isso, em Property vamos selecionar InitialCatalog, ServerName, UserName e Password e fazer a seguinte correlação com as variáveis:
InitialCatalog - var_Banco
ServerName - var_Servidor
UserName - var_Usuario
Password - var_Senha
(4) Clicar sobre a variável e arrastar para a área Expression;
(5) Área em que a variável é definida;
(6) Local que o valor da variável é apresentado quando clicamos em Evaluate Expression;
(7) Local que conseguimos visualizar o valor de uma variável;
(8) Clicar em OK para confirmar.
4.4 - Configurando o Pacote ETL
Dentro de um projeto de ETL no SSIS, existem algumas configurações que precisamos realizar para deixar o nosso processo mais rápido.
Uma delas é a opção Delay Validation. Por default ela vem como False, o que significa que sempre quando abrir um pacote criado, todos os componentes e conexões são validados antes de permitir que o usuário faça qualquer coisa.
Vamos ver como alterar essa configuração.
(1) Em Control Flow, vamos clicar na tela central e apertar o botão F4 e em Delay Validation vamos trocar de False para True;
(2) Isso irá impedir as validações ao carregar o pacote.
Vamos repetir a mesma configuração porém agora na conexão criada.
(1) Clicar sobre a conexão e apertar o botão F4 e em Delay Validation vamos trocar de False para True;
(2) Isso irá impedir as validações ao carregar o pacote.
4.5 - Definindo Valores das Variáveis
O próximo passo é definir valores para as variáveis.
Para que isso ocorra, vamos abrir o arquivo em um bloco de notas e seguir as configurações abaixo.
(1) Variáveis criadas;
(2) Valor de cada variável.
Agora lembra do que comentei com você anteriormente, esse processo torna seu processo de ETL mais robusto, podendo ser transitado para qualquer ambiente (Dev, Qas e Prd) sem que precise ser recompilado.
Para que isso aconteça, a única configuração que você precisa ter em cada ambiente é a criação do mesmo diretório, o arquivo com mesmo nome e as credencias de cada banco (servidor e base dados), com isso pronto basta transitar o pacote ETL pelos ambientes que irá funcionar perfeitamente.
Após definir os valores das variáveis, vamos fechar o pacote do SSIS e em seguida abrir. Essa ação é necessária justamente para que as informações possam ser capturadas pelo ETL.
Observe no item (1) que as configurações já são carregadas automaticamente.
4.6 - Criando o Fluxo de Importação
Após os passos acima, vamos começar a criação do fluxo de importação dos dados.
(1) Em SSIS Toolbox vamos clicar em Data Flow Task;
(2) O componente será carregado no Control Flow.
4.6.1 - Configurando o Componente Source Assistant
Conforme imagem anterior, vamos fazer uso de 2 componentes! Um para a nossa origem de dados e um para o destino dos dados.
(1) Em SSIS Toolbox, vamos selecionar o componente Source Assistant;
(2) Feito isso a tela ao centro será carregada;
(3) Como nossa origem será uma tabela do banco de dados, vamos selecionar SQL Server;
(4) Selecionar a conexão que criamos;
(5) Observe que algumas informações referente a origem do arquivo é apresentada;
(6) Clicar em OK para confirmar.
Após adicionar o componente de Source Assistant e selecionar a configuração criada, vamos validar se o acesso a base de dados irá funcionar.
(1) Duplo clique sobre o componente OLE DB Source;
(2) Selecionar a conexão criada;
(3) Selecionar a tabela dbo.consulta_vagas;
(4) Clicar em Preview para visualizar os dados;
(5) Dados carregados da tabela.
4.6.2 - Configurando o Componente Destination Assistant
(1) Em SSIS Toolbox, vamos selecionar o componente Destination Assistant;
(2) Feito isso a tela ao centro será carregada;
(3) Como nosso destino será uma tabela no banco de dados, vamos selecionar SQL Server;
(4) Selecionar a conexão que criamos;
(5) Observe que algumas informações referente ao destino do arquivo é apresentada;
(6) Clicar em OK para confirmar.
Da mesma forma que no Source selecionamos a origem da informação, nesse passo vamos selecionar o nosso Destino.
(1) Duplo clique no componente OLE DB Destination e na aba Connection Manager;
(2) Selecionar a conexão com o banco de dados;
(3) Nesse passo é possível realizar a criação de uma nova conexão;
(4) Selecionar o modo de carga de dados;
(5) Selecionar em qual tabela os dados serão gravados;
(6) É possível criar uma tabela caso não exista;
(7) Podemos visualizar se existe algum registros em nosso destino;
(8) Clicar em OK para finalizar a configuração.
O próximo passo é realizar o mapeamento da origem com o destino.
(1) Componente OLS DB Destination na aba Mappings;
(2) Origem e destino;
(3) Selecionar a opção Map items by Matching Names, para realizar o mapeamento automático por nome;
(4) Ao concluir o mapeamento basta clicar em OK.
Não estarei abordando a aba Error Output.
Pronto! Fluxo criado e configurado...
Executado com sucesso!
Os arquivos usados até aqui estão disponíveis em:
Pacote SSIS - Parametrizando Conexões
16_Parametrizando_Conexao.dtsx
5 - Conclusão
Muito bom meu amigo, mais excelente post concluído.
Hoje o nosso desafio foi transformar aquele projeto básico em algo mais robusto.
Esse tipo de configuração é muito comum no mundo corporativo. Precisamos sempre pensar na melhor forma de desenvolver um processo.
Espero que tenha gostado! Nos vemos em breve!
Um excelente dia e fique com Deus!
Komentarze