1
resposta

Erro: 0xC0202009 em Carga Fato 001

Estou na parte do curso onde carregamos a carga da Fontes_DB para o DW_Sucos. No entanto, ao fazer o processo para a fato 001 está apresentando o seguinte erro:

Erro: 0xC0202009 em Carga Fato 001, Inserir Destino [178]: Código de Erro SSIS DTS_E_OLEDBERROR.  Erro OLE DB. Código de erro: 0x80040E2F.
Um registro OLE DB está disponível. Origem: "Microsoft SQL Server Native Client 11.0"  Resultado: 0x80040E2F  Descrição: "A instrução foi finalizada.".
Um registro OLE DB está disponível. Origem: "Microsoft SQL Server Native Client 11.0"  Resultado: 0x80040E2F  Descrição: "A instrução INSERT conflitou com a restrição do FOREIGN KEY "FK_Fato_001_Dim_Tempo". O conflito ocorreu no banco de dados "DW_SUCOS", tabela "dbo.Dim_Tempo", column 'cod_dia'.".
Erro: 0xC0209029 em Carga Fato 001, Inserir Destino [178]: Código de Erro SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Falha de "Inserir Destino.Entradas[Entrada de Destino OLE DB]" devido ao código de erro 0xC020907B e a disposição da linha de erro em "Inserir Destino.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 Carga Fato 001, SSIS.Pipeline: Código de Erro SSIS DTS_E_PROCESSINPUTFAILED. Falha do método ProcessInput no componente "Inserir Destino" (178) com o código de erro 0xC0209029 durante o processamento da entrada "Entrada de Destino OLE DB" (191). 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.

Como posso corrigir esse conflito com a FK da tabela de dimensão tempo?

1 resposta

Olá Gilmar, tudo bem?

O erro consiste no conflito de FK entre o Cod_Dia da Dim_Tempo e Cod_Dia da Fato 001. O período selecionado na Dim_Tempo não corresponde com a seleção de período na consulta :

SELECT * FROM TAB_FATO001 WHERE YEAR(DATA_FATO) >= '2014' AND MONTH(DATA_FATO) >= '1' AND YEAR(DATA_FATO) <= '2014' AND MONTH(DATA_FATO) <= '1'

Então eu sugiro que altere o ano dentro dos parâmetros ou na consulta mesmo e depois inicie novamente que o projeto irá rodar.

Espero ter ajudado, bons estudos!