none
Zipar na Stored Procedure RRS feed

  • Pergunta

  • Senhores,
     
     Estou precisando criar uma stores procedure, a qual gerará um arquivo texto (até aí sem problemas), e depois precisarei compactar(exclusivo .zip) o determinado arquivo.
     Já li algumas coisas na net, porém as soluções que encontrei precisam instalar alguns componentes ou aplicativo no servidor de banco de dados (coisa que não é permitido no cliente que trabalho). Vi exemplos de procedures que após gerar o arquivo chamam um .bat para zipar o arquivo, mas prefiro, se possível, fazer tudo dentro da stored procedure.

    Sendo assim gostaria de saber se alguém dispõe de alguma solução para isso.

    Obrigado.
    Rafael
    quinta-feira, 26 de março de 2009 14:35

Todas as Respostas

  • Rafmesquita,

    Eu desconheço outras soluções, já utilizei em alguns casos arquivos .bat para realizar este tipo de procedimento.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 26 de março de 2009 16:51
  • Rafael,

    Desenvolva uma função ou stored procedure .Net no SQL Server 2005/2008, você pode mandar essa escrever o arquivo .txt usando a as classes da System.IO, Stream e File.
    E para usar na compressão você pode utilizar System.IO.Compression.

    Você precisa desenvolver isso em C# ou VB.Net, compilar, gerar um Assembly no SQL Server e depois criar uma procedure instanciando esse assembly.

    No último caso desenvolva uma procedure que chama um zip por linha de comando e chame a xp_cmdshell.


    Espero que te ajude isso!


    Abraço,


    Rodrigo Fernandes - Este post foi útil pra vc? Então marque-o como tal.
    quinta-feira, 26 de março de 2009 17:58
  • Rodrigo,

    É verdade utilizando os recurso de CLR poderiamos fazer esse procedimento no Visual Studio e depois gerar o Assembly adicionando este assembly no SQL Server.

    Em relação ao xp_cmdshell já utilize para esta finalidade funcionou perfeitamente.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 26 de março de 2009 18:19
  • Bom Dia,

    Recomendo fortemente que você não deixa na SP a tarefa de compactar um arquivo texto.

    Esse tipo de tarefa não deve ficar a  cargo do banco de dados além de representar um overhead extra para o SQL Server (já vi Winzip derrubar servidor de banco por conta de compactação). Idem para a xp_cmdshell chamar um .bat

    Acredito que a melhor solução seja seguir a recomendação de utilizar as classes do .NET.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com/

    OUTER JOIN com mais de duas tabelas ? Será que está mesmo “certo” ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!514.entry
    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 27 de março de 2009 10:50