none
Insert dados Servidores - SQL RRS feed

  • Pergunta

  • Galera,

    Estou com grande problema, tenho que inserir automaticamente no sql, dados que a opção propriedade da pasta de rede traz, como por exemplo o nome e tamanho. Não faço ideia de como fazer.

    segunda-feira, 13 de janeiro de 2014 12:22

Respostas

  • SS_DBAJr,

    Como o Rafael escreveu, você pode fazer um pacote no SSIS para obter esta informação.

    Apesar de existir uma Task que daria para adaptar e obter este resultado("File System"), eu prefiro à flexibilidade da Task "Script".

    Se você utiliza o SQL Server 2012, o "SQL Server Data Tools" permite códigos em C# (senão você vai ter de adaptar para VB.Net). Segue abaixo um exemplo com duas funções, 

    using System.IO;

    public void Main() {
    string caminho = "C:\\<Seu_Diretorio>";

    string nome = getDirNome(caminho);

    double tamanho = getDirTamanho(caminho);
    Dts.TaskResult = (int)ScriptResults.Success;
    }


    private double getDirTamanho(string caminho) {        long lTamanho = 0;     foreach (string arq in Directory.GetFiles(caminho, "*.*", SearchOption.AllDirectories)) {         lTamanho += new FileInfo(arq).Length;     }     return Math.Round((double)lTamanho / (double)(1024 * 1024), 2); } private string  getDirNome(string caminho) {     DirectoryInfo info = new DirectoryInfo(caminho);     return info.Name; }

    Veja abaixo a imagem de criação do pacote:

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Sugerido como Resposta Roberto FonsecaMVP segunda-feira, 13 de janeiro de 2014 20:21
    • Marcado como Resposta SS_DBAJr terça-feira, 14 de janeiro de 2014 18:48
    segunda-feira, 13 de janeiro de 2014 16:22
  • SS_DBAJr,

    Infelizmente não. O pacote do Data Tools para estas tarefas não está disponível nesta versão.

    Não esqueça de marcar todas as respostas que te esclareceram como úteis !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Marcado como Resposta SS_DBAJr terça-feira, 14 de janeiro de 2014 18:48
    terça-feira, 14 de janeiro de 2014 18:16

Todas as Respostas

  • voce pode criar uma dts e agendar pra rodar todos os dias, dentro da dts é possivel chamar um "script task" e fazer com que o C# pegue as propriedades de pastas e arquivos utilizando DirectoryInfo e FileInfo.

    --Rafael Albuquerque

    segunda-feira, 13 de janeiro de 2014 14:23
  • SS_DBAJr,

    Como o Rafael escreveu, você pode fazer um pacote no SSIS para obter esta informação.

    Apesar de existir uma Task que daria para adaptar e obter este resultado("File System"), eu prefiro à flexibilidade da Task "Script".

    Se você utiliza o SQL Server 2012, o "SQL Server Data Tools" permite códigos em C# (senão você vai ter de adaptar para VB.Net). Segue abaixo um exemplo com duas funções, 

    using System.IO;

    public void Main() {
    string caminho = "C:\\<Seu_Diretorio>";

    string nome = getDirNome(caminho);

    double tamanho = getDirTamanho(caminho);
    Dts.TaskResult = (int)ScriptResults.Success;
    }


    private double getDirTamanho(string caminho) {        long lTamanho = 0;     foreach (string arq in Directory.GetFiles(caminho, "*.*", SearchOption.AllDirectories)) {         lTamanho += new FileInfo(arq).Length;     }     return Math.Round((double)lTamanho / (double)(1024 * 1024), 2); } private string  getDirNome(string caminho) {     DirectoryInfo info = new DirectoryInfo(caminho);     return info.Name; }

    Veja abaixo a imagem de criação do pacote:

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Sugerido como Resposta Roberto FonsecaMVP segunda-feira, 13 de janeiro de 2014 20:21
    • Marcado como Resposta SS_DBAJr terça-feira, 14 de janeiro de 2014 18:48
    segunda-feira, 13 de janeiro de 2014 16:22
  • Oi gente.

    Uso o 2012 sim, mas o express, é possível fazer isso com ele também?

    terça-feira, 14 de janeiro de 2014 18:01
  • SS_DBAJr,

    Infelizmente não. O pacote do Data Tools para estas tarefas não está disponível nesta versão.

    Não esqueça de marcar todas as respostas que te esclareceram como úteis !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Marcado como Resposta SS_DBAJr terça-feira, 14 de janeiro de 2014 18:48
    terça-feira, 14 de janeiro de 2014 18:16
  • É, foi o que suspeitava.

    terça-feira, 14 de janeiro de 2014 18:48