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

Recebendo erro ao tentar executar a Carga Fato001!

Ao tentar executar o código, o campo Inserir Destino na Dimensão de Alteração Lenta apresenta erro. Estou no 2º vídeo da aula 6 de ETL 2.

Segue o script da execução e erro.

Inicialização do pacote SSIS "C:\Users\guimd\Documents\Codigo\Visual\DatawarehouseSucos\CargaDatawarehouse\CargaFatos.dtsx". Informações: 0x4004300A em Carga Fato001, SSIS.Pipeline: Validation phase is beginning. Informações: 0x4004300A em Carga Fato001, SSIS.Pipeline: Validation phase is beginning. Aviso: 0x80047076 em Carga Fato001, SSIS.Pipeline: The output column "DATA_FATO" (14) on output "Saída de Origem OLE DB" (13) and component "Carga Fato001" (2) is not subsequently used in the Data Flow task. Removing this unused output column can increase Data Flow task performance. Informações: 0x40043006 em Carga Fato001, SSIS.Pipeline: Prepare for Execute phase is beginning. Informações: 0x40043007 em Carga Fato001, SSIS.Pipeline: Pre-Execute phase is beginning. Informações: 0x4004300C em Carga Fato001, SSIS.Pipeline: Execute phase is beginning. Erro: 0xC0202009 em Carga Fato001, Inserir Destino [178]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E2F. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E2F Description: "A instrução foi finalizada.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E2F Description: "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 Fato001, Inserir Destino [178]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Inserir Destino.Entradas[Entrada de Destino OLE DB]" failed because error code 0xC020907B occurred, and the error row disposition on "Inserir Destino.Entradas[Entrada de Destino OLE DB]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure. Erro: 0xC0047022 em Carga Fato001, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Inserir Destino" (178) failed with error code 0xC0209029 while processing input "Entrada de Destino OLE DB" (191). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure. Informações: 0x40043008 em Carga Fato001, SSIS.Pipeline: Post Execute phase is beginning. Informações: 0x4004300B em Carga Fato001, SSIS.Pipeline: "Inserir Destino" wrote 0 rows. Informações: 0x40043009 em Carga Fato001, SSIS.Pipeline: Cleanup phase is beginning. Falha na tarefa: Carga Fato001 Aviso: 0x80019002 em Package1: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (3) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors. Pacote SSIS "C:\Users\guimd\Documents\Codigo\Visual\DatawarehouseSucos\CargaDatawarehouse\CargaFatos.dtsx" concluído: Falha. O programa "[79848] DtsDebugHost.exe: DTS" foi fechado com o código 0 (0x0).

Achei em outros fórums que está com algum erro na Dim_Tempo, mas não consigo o encontrar...

3 respostas

Oii Guilherme, 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 da Carga Fato para o ano que foi carregado ou nos parâmetros da Dimensão Tempo carregue de 2013 a 2015.

Qualquer coisa me fala, tá bom? :)

Funcionou, porém eu tive que mudar manualmente no código e não nos parâmetros! Você saberia me dizer por que alterando os parâmetros ele não atualizou?

solução!

Oi Guilherme,

É porque no script da dimensão tempo, carregamos apenas o ano de 2013 se eu não me engano. Portanto se você colocar o ano de 2013 nos parâmetros, vai funcionar. Agora que você alterou no código e carregou, se colocar nos parâmetros, acredito que funcione.

Qualquer dúvida estou por aqui :)