Fique por dentro
Não deixe de conferir os cursos de banco de dados que a DevMedia oferece.

É comum utilizarmos o SQL Server Integration Services (SSIS) para executar pacotes, mas em algumas situações é necessário que esses pacotes sejam executados em outro ambiente como, por exemplo, através de uma interface. Trabalhar dessa forma pode ser uma alternativa interessante em um cenário onde os usuários precisam executar pacotes sob demanda, o que exigirá a utilização de uma interface. Com a integração do SSIS e .NET, essa tarefa torna-se totalmente possível. Por meio de algumas classes podemos acessar todos os itens de um pacote SSIS através da plataforma .NET.

Para criar um objeto, uma classe de pacote será exigida para que faça parte da solução. Este objeto nos dará acesso a todos os membros e funções de dados da classe. Em C#, chamaremos os dados como variáveis ​​e as funções como métodos.

Uma das tarefas principais será a de especificar o caminho do pacote que será executado, podemos trabalhar de duas formas: através do web.config ou definir um arquivo dentro da própria classe que receberá esse caminho.

Definir o caminho do pacote no arquivo web.config encontraremos vantagens e desvantagens. Uma das vantagens em se trabalhar com o arquivo web.config é que podemos facilmente alterar o caminho do pacote antes de efetivamente executar o pacote. Podemos também reutilizar esse caminho em outras classes do projeto, porém, o caminho de acesso ao pacote pode ficar vulnerável a ataques.

Quando trabalhamos com classes, o caminho de acesso ao pacote não pode ser acessado, o que o torna menos vulnerável a ataques, entretanto, o caminho de acesso ao pacote é difícil de ser codificado. Deveremos configurar um mesmo caminho para todas as páginas que utilizaram esse pacote, pois se realizarmos uma alteração nesse arquivo, deveremos aplicar aos demais.

Nesse exemplo iremos trabalhar com o arquivo web.config, pois pode ser facilmente acessado e configurado utilizando o Configuration Manager, que é o item responsável pela configuração de vários membros do arquivo web.config, como strings de conexão entre outros.

Criando um projeto utilizando o SSIS

Utilizaremos a ferramenta SSIS, presente no ambiente de desenvolvimentoSQL Server Data Tools(Business Intelligence Development Studioem versões anteriores a 2012).

Para criar o pacote, clicamos em Iniciar – Todos os Programas –Microsoft SQL Server 2012SQL Server Data Tools (Figura 1).


Figura 1. Iniciando oSQL Server Data Tools.

Com o ambiente de desenvolvimento aberto, vamos criar um novo projeto. Para isso, clique emFile – New – Project (Figura 2).

Figura 2. Criando um novo projeto.

Vamos criar um novo projeto doIntegration Servicese atribuir o nome desse projeto de “Notepad” (Figura 3). Clique em “Ok”.


Figura 3. Criando um novo projeto do SSIS.

Criando um Pacote no SSIS

Criaremos um pequeno pacote que irá executar a tarefa de abrir o programa Notepad, entretanto, o mesmo procedimento poderá ser aplicado em pacotes mais complexos.

Para essa tarefa utilizaremos o componente “Execute Process Task”, cuja função é chamar o executável do Notepad (Notepad.exe), que posteriormente exibirá uma mensagem de sucesso após a execução do pacote.

Precisamos especificar qual o caminho do executável para o bloco de notas, então para isso, clique duas vezes sobre o componente “Execute Process Task” e em seguida selecione a opção “Process”. Nas propriedades dessa opção selecione o item “Executable” e insira o caminho do executável do bloco de notas, por padrão, o caminho é C:\Windows\System32\ notepad.exe (Figura 4), clique em “OK”. Em seguida, escreveremos o código que acessará o pacote que criamos.


Figura 4. Editando o Componente Execute Process Task.

Criando uma Interface Web com C#

Para a criação da Interface Web, utilizaremos a ferramenta Microsoft Visual Studio 2010. Clique em Iniciar – Todos os Programas –Microsoft Visual Studio 2010 (Figura 5).


Figura 5. Iniciando o Visual Studio 2010.

Com o ambiente de desenvolvimento aberto, vamos criar um novo projeto. Para isso, clique emFile – New – Project. Devemos atribuir o nome desse projeto de “Interface” (Figura 6), clique em “Ok”.

Figura 6. Criando um novo projeto no Visual Studio 2010.

Precisamos inserir o caminho do pacote que criamos anteriormente no SSIS ao arquivo de configuração web.config, o seguinte código (Listagem 1) deverá ser inserido dentro da tag <configuration>”, (Figura 7).

O caminho do pacote pode ser visualizado na aba “Solution Explorer” ao clicarmos com o botão direito sobre o pacote e em seguida selecionamos “Properties”, que se encontra dentro da pasta “SSIS Packages” (Figura 8). Na janela “Properties” obtemos o caminho do pacote no campo “Full Path” (Figura 9).

Listagem 1. Arquivo web.config


  <appSettings>
      <add key="FilePath" value=
        "C:\Users\Administrator\Documents\Visual Studio   
          2010\Projects\Notepad\Notepad\Package.dtsx"/>
  </appSettings>

Figura 7.Editando arquivo web.config.

Figura 8. Acessando as Propriedades do Pacote.


Figura 9. Full Path do pacote.

Na página Default.aspx adicionaremos um componente do tipo “Button” e daremos o nome desse componente de “Executar”. Para isso, clique e arraste o componente “Button” para a página Default.aspx (Figura 10), em seguida, clique com o botão direito sobre o componente e selecione “Properties”, no campo “Text”, atribua o nome “Executar”.

Após a edição do componente “Button”, dê um duplo clique sobre ele para editarmos a página Default.aspx.cs (Figura 11).

Figura 10. Adicionando botão executar

Figura 11. Editando arquivo Default.aspx.cs

O código da Listagem 2 criará um objeto que executará o pacote que criamos no SSIS.

Listagem 2. Código de Execução do Pacote do SSIS.


  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Configuration;
  using Microsoft.SqlServer.Dts.Runtime;
  using System.Windows.Forms;
  namespace Interface
  {
      public partial class _Default : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
   
          }
   
          protected void Button1_Click(object sender, EventArgs e)
          {
              string pkgLocation;
              pkgLocation = ConfigurationManager.AppSettings["FilePath"].ToString();
   
              Microsoft.SqlServer.Dts.Runtime.Application app =
              new Microsoft.SqlServer.Dts.Runtime.Application();
              Package pkg = new Package();
              pkg = app.LoadPackage(pkgLocation, null);
   
              DTSExecResult result = pkg.Execute();
             
              if(result == DTSExecResult.Success)
                  MessageBox.Show("Package Success");
              else
                  MessageBox.Show("Package failed");
   
          }
      }
  }

Executando o Projeto Web

Com a aba “Default.aspx” selecionada, pressione o botão em destaque da Figura 12 ou pressione a tecla F5.


Figura 12.Executando o projeto Web.

A tela da Figura 13 será apresentada . Ao clicar em “Executar”, o programa Notepad será aberto e uma janela com a mensagem “Package Success” será exibida, conforme a Figura 14.

Figura 13.Executando o Pacote do SSIS.



Figura 14.Mensagem de Sucesso.