Algumas vezes a extração de dados torna-se um processo tão criterioso e minucioso que necessitamos executar instruções de extração, transformação e carga de dados fora de um processo do SQL Server.
Para esses casos, podemos executar este processo via agendamento em um job do Windows Server ou até mesmo chamando a partir de uma execução de algum aplicativo, seja um aplicativo agendado ou executado pelo usuário final. Em alguns casos, até o próprio usuário final pode ter a necessidade de executar um pacote, por exemplo, a carga de lista de preços para filiais no final de cada mês.
O fato é que não podemos exigir que os pacotes do SSIS estejam sempre presos aos processos do SQL Server, para isso o SQL Server nos dá dois utilitários – o DTExec.exe e o DTExecUI.exe.
Estes utilitários permitem executar pacotes criados no SSIS através de linhas de comando. No DTExec.exe podemos colocar a execução do pacote em um arquivo batch, o DTExecUi.exe, que por sua vez permite a execução através de uma interface gráfica e amigável.
A exemplificação da execução dos pacotes com esses dois utilitários irá necessitar de um pacote. Por isso, vou criar um pacote que faz a extração do banco de dados Northwind de um SQL Server 2000 para um banco de dados North2005 em servidor SQL Server 2005.
Se você não estiver familiarizado com a criação de pacotes acompanhe o exemplo abaixo, lembrando que esse é um pacote simples e o objetivo, neste artigo, não é explicar como criar pacotes no SSIS.
.
Figura 1 – Selecionar o Import Data para o banco de dados North2005.
Esse comando irá chamar um utilitário de importação de dados do SQL Server. Perceba que ele é um wizard que só depende de leitura para executar. No primeiro passo, selecione o nome do servidor SQL Server de origem. Em meu exemplo, o nome é Barth2000, informe também as credenciais para autenticação e selecione o banco de dados Northwind.
Figura 2 – A origem dos dados.
Figura 3 – Destino dos dados.
O segundo passo nos remete à escolha do destino.
Já no terceiro passo, selecione a opção Copy data from one or more tables or views e siga para a próxima tela.
Selecione todos os objetos disponíveis e avance para o próximo passo, onde chegamos ao ponto em que vamos escolher a opção de criar o pacote SSIS.
Figura 4 – Salva o processo de importação em um pacote SSIS.
Quando avançarmos, o SQL Server irá solicitar como será o nível de proteção do pacote, para fins de boa prática, selecionei com senha.
Figura 5 – Nível de proteção do pacote
Figura 6 – Dados para o SQL Server salvar o pacote.
Após preencher os dados para o SQL Server ter conhecimento de onde e com que autenticação salvar o pacote, clique em Finish e o SQL Server irá executar as rotinas do SSIS Package. É só aguardar ao término e clicar em close. Importante lembrar que ao salvarmos esse pacote no SQL Server este ficará gravado no banco de dados MSDB. Para validar essa informação, faça o select abaixo no banco MSDB.
Figura 7 – Verificando a gravação do pacote.
Executando o DTExecUI.exe
O DTExecUi.exe pode ser chamado de diversas formas, neste artigo vou exemplificar duas formas de chamar o utilitário.
A maneira mais simples é a partir do Iniciar/Executar do Windows digitando DTExecUI.exe, isso irá chamar o utilitário.
Outra maneira de chamar é a partir do Management Studio, veja os passos abaixo:
1. Chame o Management Studio
2. Na tela de conexão (Connect to Server) selecione Integration Services no campo Server Type.
Figura 8 – Connect Server do Management Studio.
3. Expandindo a pasta Stored Packages e MSDB, iremos encontrar o package que criamos chamado Pacote.
Figura 9 – Stored Packages.
4. Ao clicar sobre o Pacote com o botão direito teremos a opção Run Package. Este comando irá executar o DTExecUi.exe.
Figura 10 – Run Package chama o DTExecUI.exe.
Executando o Pacote através do DTExecUI.exe
O DTExecUI é dividido em guias de configuração, vou explicar as principais configurações dentro deste aplicativo para executar o pacote.
- General: Esta guia solicita informações sobre o armazenamento do pacote.
- Configurations: permite informar arquivos de configuração pré-definidos para a execução de um pacote.
- Command Files: permite informar arquivos de comando que são utilizados durante a execução do pacote.
- Connection Managers: Permite editar as chaves de conexão usadas pelos pacotes.
- Execution Options: usado para informar as opções de tempo de execução do pacote, incluindo o máximo de execuções concorrentes.
- Reporting: indica quais informações devem ficar registradas para posterior relatório de execução.
- Logging: informa a string de conexão para os provedores de log.
- Set Values: atribui valores às variáveis do pacote.
- Verification: define os critérios de verificação do pacote.
- Command Line: exibe ou edita a linha de comando gerada pelos atributos de todas as outras guias.
Após ver sobre as opções que o utilitário nos oferece, vamos executar o pacote. Para execução do pacote, siga os passos descritos abaixo:
1. Execute o DTExecUI.exe e na guia geral preencha o nome do servidor e autenticação (nesse artigo estou executando no próprio servidor e com autenticação integrada).
Figura 11 – Configuração básica da localização do pacote.
2. Selecione o pacote no item SSIS Package, veja a imagem abaixo.
Figura 12 – Selecionando o SSIS Package.
3. Para execução desse pacote não precisaremos configurar outros parâmetros, porém vale o tempo de olhar a guia Command Line que mostra a linha de comando para executar o mesmo.
Figura 13 – Linha de comando de execução do SSIS Package.
É bom lembrar que é possível editar essa linha apenas marcando a opção Edit the command line manually.
Para executar o SSIS Package agora, basta acionar o botão Execute. O DTExecUi irá exibir uma tela de acompanhamento da execução.
Figura 14 – Package Execution Progress.
Executando o Pacote através do DTExec.exe
Agora que já vimos como executar o SSIS Package através da interface gráfica ficará mais fácil de perceber como é a utilização do utilitário de linha de comando.
Este utilitário tem os mesmos parâmetros da interface gráfica. Para estudar todas as possibilidades de parâmetros, consulte o BOL no link http://msdn.microsoft.com/pt-br/library/ms162810.aspx, neste link há todas as informações de como passar os parâmetros, tal qual fizemos no tópico anterior.
O que vale orientar aqui é esta tabela com os códigos de retorno do utilitário.
Para executar o pacote via linha de comando, abra o prompt de comando e siga a imagem 15 para execução.
Figura 15 – Execução através do prompt de comando.
O comando acima irá disparar a execução do SSIS Package e ao final irá exibir um sumário da execução.
Figura 16 – Execução do SSIS Package.
Perceba que para construir essa linha de comando foram copiados os parâmetros que o DTExecUI gerou, veja a figura 13. Em casos de maior complexidade e de não ser possível executar o pacote através do utilitário gráfico, pode ser uma boa solução a construção de parâmetros desta forma.
Há a possibilidade de colocarmos a chamada dessa linha de comando dentro de um batch t-sql, para isso basta utilizar a extend stored procedure xp_cmdshell.
Figura 17 – Execução através Extend Stored Procedure.
Importante lembrar que para executar esse comando deve-se primeiro ter a opção que permite a execução de Extend Stored Procedure ativa no Surface Area Configuration.
Conclusão
Diversas vezes na rotina de atividades de administrador de um banco de dados temos que executar, criar e auxiliar a execução de ETLs. Para facilitar a vida do nosso usuário final, seja ele um programador ou um gerente de custos, podemos utilizar esses aplicativos para que os mesmos não tenham que tornar-se especialistas em SQL Server e tão pouco nós (DBAs) sejamos incumbidos de trabalhos operacionais que não fazem parte das atividades de administração e desenvolvimento em banco de dados.