Banco de Dados

10 ago, 2009

Utilitários DTExec e DTExcUI

Publicidade

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.


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 2 – A origem dos dados.

Figura 3 - Destino 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.

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 5 – Nível de proteção do pacote

Figura 6 - Dados de para o SQL Server salvar o 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.


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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.