Qualquer ajuda seria apreciada com qualquer cenário.
E se
Existem configurações disponíveis para baixar vários arquivos em paralelo de um servidor FTP?
senão
Caso contrário, acho que vou lançar o meu próprio componente de origem do script C# usando: List Directory Contents with FTP , FtpWebRequest Class e C# Multiple Download from FTP using parallel task - Duplicate Download issue to get go.
Outros detalhes
- SSIS 2012 salvando em um diretório local do Windows Server 2012
- 100 + arquivos de texto ascii
- 6 pastas irmãs
- Convenção de nome de arquivo:
AAAA_YYYYMMDD.txt
- O tamanho do arquivo varia de 5 KB a 15 MB
- Atualmente, só é possível baixar um arquivo por vez
- Execute uma vez por dia manualmente neste estágio via SSDT (ainda em prototipagem/desenvolvimento, portanto não em um sistema de produção ainda, mas pretendo ter o Sql Agent executando os pacotes no futuro)
- Pacotes downstream para carregar dados de arquivo de texto em tabelas de armazenamento de dados
(se a tarefa de script for usada, talvez o buffer do fluxo de resposta possa entrar em um multicast com 1 fluxo de buffer gravando em arquivos de texto, enquanto o outro fluxo de buffer grava em tabelas de teste?)
Nativo, não.
Caramba, eu mal classifico o componente FTP pronto para uso como um componente real. Ele atende a algumas especificações técnicas para FTP apenas para as operações mais rudimentares. Normalmente, tenho seguido o caminho de chamar
ftp.exe
da Tarefa de Processo de Execução com um arquivo de parâmetro ou apenas usei as bibliotecas .NET para fazer isso.Eu nunca pensei em paralelizar downloads de FTP, mas esta questão no SO parece uma implementação válida dele https://stackoverflow.com/questions/18117536/c-sharp-multiple-download-from-ftp-using-parallel-task -duplicate-download-issu
Dependendo de como você projeta as coisas, cheguei à conclusão de que fazer com que os pacotes baixem arquivos e executem operações no(s) arquivo(s) que possam ter encontrado é um padrão doloroso. Em vez disso, acho que obtive melhores resultados ao separar essas atividades e assumir que o pacote de consumo será executado apenas se os dados já existirem. Isso me permitiu fazer mudanças radicais na forma como adquiri os dados (passamos de SFTP para FTP sem nenhuma alteração no pacote principal) sem ter que validar/testar novamente o processamento dos dados. Pode não ser um problema para mim, mas simplificou minha vida de compliance.
O resultado líquido do que foi dito acima foi que meu trabalho de agente passou de "executar pacote" para "executar pacote ftp", "teste de existência", "executar pacote de processamento" ou "alertar que nenhum arquivo foi encontrado". A modularização nos permitiu mais flexibilidade, além de permitir que mais pessoas trabalhassem no problema em vez de uma pessoa trabalhando em um pacote monolítico.