Um processo sobre o qual não tenho controle é descartar e recriar tabelas em um banco de dados MySQL todas as noites. Isso não seria um problema (eu acho), se ele recriasse as tabelas de forma idêntica todas as vezes. Mas isso não acontece: todas as manhãs eu entro e abro meu projeto SSIS e recebo novos erros/avisos de validação de metadados em tabelas/colunas aleatórias, porque esse processo noturno está criando varchar
colunas com comprimento que varia dependendo dos dados, então ontem eu tinha uma coluna com comprimento de 90, e hoje a mesma coluna na mesma tabela agora tem comprimento de 208, e amanhã pode ser uma história diferente... ou não.
Este banco de dados MySQL é minha fonte de dados primária - eu tenho meu banco de dados Staging no SQL Server e, com uma conexão de servidor vinculada, estou usando o SSIS para selecionar dados dessas tabelas e nas tabelas do SQL Server (com algumas colunas adicionadas), que Estou truncando antes de preenchê-los com os dados remotos (para que os metadados neste banco de dados de preparação sejam corrigidos).
Por que o SSIS precisa validar metadados externos? Se eu desligar a validação do tempo de design, ele diz que está atrasado para o tempo de execução - isso significa que eu só estaria empurrando o problema do tempo de design para o tempo de execução e ainda obteria um pacote com falha?
Eu tenho um script T-SQL que pode realizar a transferência de dados do MySQL para as tabelas de teste do SQL Server, mas esse script é executado em cerca de 45 minutos enquanto o pacote SSIS, quando todos os metadados estão atualizados, é executado em cerca de 5 minutos - escusado será dizer que prefiro encontrar uma maneira de fazer o SSIS parar de reclamar sobre metadados desatualizados do que usar esse script.
Existe uma maneira de trabalhar com esse metamorfo de uma fonte de dados no SSIS e manter minha sanidade?
Nesse caso desagradável, acho que a melhor estratégia é compartimentá-lo longe do SSIS. Mova isso para um servidor vinculado com uma visualização alterada ou use alguma outra ferramenta etl como um script powershell para tirá-lo do esquema de dança em uma tabela com um fixo. Se você tiver algum histórico, poderá adivinhar um valor razoável para o tamanho superior do campo. Você sempre pode torná-lo varchar (max). Estou presumindo que o MySql está fazendo um 'select into' para criar a tabela. Em qualquer caso, o MySql não está fazendo nenhuma afirmação confiável sobre os dados, então você precisa fazer isso sozinho antes que o SSIS fique feliz.