Bom dia a todos, Já faz 2 dias tentando descobrir como resolver esse problema, ainda sem resposta. Talvez você possa me ajudar. É o seguinte. Criei um pacote SSIS para importar dados de outro servidor de banco de dados; aqui estão as especificações de ambos os servidores: Estou usando o Sql Server Data Tools 2012
Fonte: SQL Server 2008 r2 Tipo de conexão: OLE DB
Destino: SQL Server 2012 Tipo de conexão: OLE DB
O pacote é um pacote de Importação e Exportação, com 2 tarefas, uma "Tarefa de Fluxo de Dados" e uma "Tarefa de Execução SQL". A fonte é um comando SQL, com uma simples seleção de algumas junções, nada tão especial. o destino é tabela no servidor de destino. Claro que temos uma tarefa de conversão de dados no meio. O pacote estava funcionando bem até adicionarmos uma nova coluna à Seleção, do tipo varchar(50). Modifiquei a tabela de destino com a mesma, apenas usei NVARCHAR(50) e adicionei a conversão de dados como string UNICODE [DT_WSTR] de comprimento 50.
Depois que isso foi feito, estou recebendo o erro:
Erro: 0xC020901C em [Package], Source - Query [127]: Ocorreu um erro com Source - Query.Outputs[OLE DB Source Output].Columns[COL] on Source - Query.Outputs[OLE DB Source Output]. O status da coluna retornado foi: "O valor não pôde ser convertido devido a uma possível perda de dados.".
Tentei aumentar os tamanhos das colunas de destino de 50 para 100, mas continua acontecendo o mesmo erro. O estranho é que, quando substituo Col por NULL na consulta de origem, consigo que o pacote seja executado perfeitamente.
Alguma sugestão?
Ok, encontrei a solução depois de pesquisar e testar muitas coisas. O problema estava nos metadados (a conexão entre a consulta de origem e a conversão de dados), o tamanho do campo não correspondia mais ao da consulta de origem, o que é muito estranho para mim, pois pensei que os metadados seriam atualizado automaticamente quando você salva e compila ou quando fecha a solução e a reabre.
Não sei porque isso ocorreu, mas agora o pacote voltou a rodar perfeitamente.
Esta não é uma solução, mas uma solução estranha.
Eu tive exatamente o mesmo problema, era apenas uma coluna que continha um código alfanumérico de 6 caracteres no tipo Char (6). Minha fonte era um script sql, meu destino era um nvarchar e eu tinha um conversor no meio.
Nulos, onde ok, então restringi a importação a um único registro com um valor. Descobri que poderia executar a importação com LEFT([column], 1), mas não com qualquer outro caractere do código. Por exemplo SUBSTRING([coluna], 2, 1) ainda com erro.
Nesse ponto, desisti e dei um jeito. Consegui importar a coluna e a chave associada para uma tabela diferente e executar um script UPDATE para copiar os dados para a tabela de destino.
Muito estranho.