Olá pessoal, gostaria de compartilhar com vocês um BUG descoberto por mim no SSIS 2008 R2 (Ainda sem solução)
Esses dias estava em um cliente que tinha o SQL 2005 e migrou para SQL 2008 R2 e os pacotes ainda não haviam sido totalmente testados em ambiente de desenvolvimento.
Alguns dos pacotes simplesmente pararam de funcionar com a mensagem
Error at Data Flow Task [LINKED SERVER [1]]: No column information was returned by the SQL command.
Segue abaixo procedimentos para reproduzir o erro
Crie uma procedure qualquer com o um “SELECT * FROM TABELA”
Se vc executar ela diretamente ao clicar em columns ele traz normalmente os metadados
Agora se vc executar via linked server exatamente a mesma procedure via linked server (no meu exemplo fiz um linked server para meu próprio servidor apenas para teste), ele traz a mensagem.
EXEC [127.0.0.1].sandbox.dbo.spTESTE_VAR
Uma informação é que este BUG não ocorre no SSIS 2005
Já tenho um chamado aberto na microsoft que confirmou que é um BUG e será feito uma correção.
WORKAROUND
Normalmente o SSIS acessa os metadados do SQL para retornar quais colunas e tipos de dados serão usados, retornando muito rapidamente
Usando o “SET FMTONLY OFF” antes da execução da procedure acaba fazendo com que o SSIS execute a procedure para saber que tipos de dados ela vai retornar, ou seja se a procedure é rápida vc não ira perceber a diferença, mas se a procedure demorar 30 min para rodar esquece, pois o SSIS ao executar ele Pré-Valida, Valida, só depois executa, ou seja, o tempo total sobe para 1h e 30 min
SET FMTONLY OFF
EXEC [127.0.0.1].sandbox.dbo.spTESTE_VAR
Espero que isso ajude alguém, assim que tiver novidades sobre o chamado te aviso.