Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro ao carregar dados na dimensão

Ao executar a carga, esta ocorrendo o erro abaixo:

Inicialização do pacote SSIS "C:\Users\heber\source\repos\DatawarehouseSucos\CargaDatawarehouse\CargaDimesoes.dtsx". Informações: 0x4004300A em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de validação está começando. Informações: 0x4004300A em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de validação está começando. Informações: 0x40043006 em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de Preparação para Execução está começando. Informações: 0x40043007 em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de Pré-execução está começando. Informações: 0x4004300C em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de Execução está começando. Erro: 0xC0202009 em Criacao da Dimensao Fabrica, Tabela Dim_Fabrica [37]: Código de Erro SSIS DTS_E_OLEDBERROR. Erro OLE DB. Código de erro: 0x80004005. Um registro OLE DB está disponível. Origem: "Microsoft OLE DB Driver for SQL Server" Resultado: 0x80004005 Descrição: "A instrução foi finalizada.". Um registro OLE DB está disponível. Origem: "Microsoft OLE DB Driver for SQL Server" Resultado: 0x80004005 Descrição: "Não é possível inserir o valor NULL na coluna 'Id', tabela 'DW_SUCOS.dbo.Dim_Fabrica'; a coluna não permite nulos. Falha em INSERT.". Erro: 0xC0209029 em Criacao da Dimensao Fabrica, Tabela Dim_Fabrica [37]: Código de Erro SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Falha de "Tabela Dim_Fabrica.Entradas[Entrada de Destino OLE DB]" devido ao código de erro 0xC020907B e a disposição da linha de erro em "Tabela Dim_Fabrica.Entradas[Entrada de Destino OLE DB]" especifica falha no erro. Ocorreu um erro no objeto especificado do componente especificado. Mensagens de erro podem ter sido postadas antes com mais informações sobre a falha. Erro: 0xC0047022 em Criacao da Dimensao Fabrica, SSIS.Pipeline: Código de Erro SSIS DTS_E_PROCESSINPUTFAILED. Falha do método ProcessInput no componente "Tabela Dim_Fabrica" (37) com o código de erro 0xC0209029 durante o processamento da entrada "Entrada de Destino OLE DB" (50). O componente identificado retornou um erro do método ProcessInput. Esse erro é específico do componente, mas é fatal e fará com que a execução da tarefa de Fluxo de Dados seja interrompida. Mensagens de erro podem ter sido postadas antes dessa com mais informações sobre a falha. Informações: 0x40043008 em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase Pós-execução está começando. Informações: 0x4004300B em Criacao da Dimensao Fabrica, SSIS.Pipeline: "Tabela Dim_Fabrica" gravou 2 linhas. Informações: 0x40043009 em Criacao da Dimensao Fabrica, SSIS.Pipeline: A fase de limpeza está começando. Falha na tarefa: Criacao da Dimensao Fabrica Aviso: 0x80019002 em CargaDimesoes: Código de Aviso SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. O método Execution foi bem-sucedido, mas o número de erros aumentou (3) e alcançou o máximo permitido (1); resultando em falha. Isso ocorre quando o número de erros alcança o número especificado em MaximumErrorCount. Altere MaximumErrorCount ou corrija os erros. Pacote SSIS "C:\Users\heber\source\repos\DatawarehouseSucos\CargaDatawarehouse\CargaDimesoes.dtsx" concluído: Falha. O programa "[13148] DtsDebugHost.exe: DTS" foi fechado com o código 0 (0x0).

Como a Cod_Fabrica é chave primária, não da pra colocar a opção para aceitar um valor null, tem outra saída?

4 respostas

Oi, Heberton! Tudo bem?

Sim, pelo fato de que ali há uma chave primária, você não pode inserir valores nulos. Cada tupla precisa de um número único para identificação. Com o valor nulo, a identificação não é possível.

Uma solução para esse problema é garantir que você esteja fornecendo um valor válido para a coluna Id antes de executar a carga.

Você pode verificar se o valor está sendo passado corretamente na etapa de consulta SQL ou na etapa de conversão de dados, por gentileza?

Se a dúvida persistir, estou aqui no fórum pra te auxiliar.

Abraços e bons estudos!

Sim, esta a informação abaixo:

SELECT'001' AS CODIGO, 'Fábrica Rio de Janeiro' AS DESCRITOR UNION SELECT'002' AS CODIGO, 'Fábrica São Paulo' AS DESCRITOR

Seria isso?

solução!

Opa, tudo certo?

No caso, esse é o código SQL que você inseriu na etapa Execução consulta SQL. Ele está certinho, não precisa alterar ali, ok?

Agora preciso que você verifique é a etapa que vem após ela: a Conversão de Dados.

Você pode checar se ela está configurada da seguinte forma, por favor:

Etapa de conversão de dados dentro do Fluxo de Dados

Caso ela esteja, peço, então, que cheque a etapa de Dimensão de Alteração Lenta, que é a última. Na primeira parte, Inserir Destino, você pode olhar se os mapeamentos estão deste modo:

Editor do Destino, da etapa Dimensão de Alteração Lenta. Mapeamentos à mostra

É importante que as etapas estejam exatamente do mesmo modo, pois assim os dados serão carregados da forma correta na dimensão. Se algo estiver diferente do que está mostrado nas imagens, peço que altere, por gentileza.

Após ter alterado, provavelmente funcionará direitinho. =)

Se ainda não funcionar, estou aqui pra te ajudar, tá bom?

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Perfeito, funcionou!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software