25411 - Erros de insert na tabela N130NFE por violação de UK
Problema:
Solução:
Descrição do Problema: Ao verificar os logs são apresentados erros de insert na tabela N130NFE devido a violação da da UK "UK_N130NFE_0" e erros de violação da própria UK. Também pode ser apresentada a mensagem informando que o xml não pôde ser salvo pois o arquivo estava sendo usado por outro processo.
Exemplos:
NHibernate.Util.ADOExceptionReporter - ORA-00001: restrição exclusiva (WYLLIANEDOCS.UK_N130NFE_0) violada
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00001: restrição exclusiva (UK_N130NFE_0) violada
Senior.SapiensNfe.Processos.Service.Nfe.Integracao.SalvaXmlHelper.SalvarXmlAssinado - Não foi possível salvar o XML da nota de chave xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx no banco.
NHibernate.Exceptions.GenericADOException: could not insert: [Senior.SapiensNfe.DataAccess.Dados.Nfe.NotaFiscalProduto#1828][SQL: INSERT INTO N130NFE (SITNFE, SITANT, SITRET, SITIMP, VERNFE, NUMNFE, SERNFE, TOTNFE, DATEMI, FUSEMI, DATETS, DOCTIP, DOCDES, NOMDES, DATREC, FUSREC, PROREC, IDENFE, IDEERP, TIPPRO, DATCON, CNPEMI, TPDEMI, NOMEMI, TIPEMI, TOTICM, SUBTRI, IEEMIS, MOTCTG, DATCTG, FUSCTG, TIPOPE, IEDEST, CAMEML, DIGVAL, TIPREL, TIPNFE, IDEGER, SITAUD, DATPRO, DATIMP, TIPAMB, VERORI, SITMAN, CODSFZ, MSGSFZ, SITENE, SEQFIL, SEQUFE, SEQUFD, SEQNFE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-00001: restrição exclusiva (UK_N130NFE_0) violada
NHibernate.Util.ADOExceptionReporter - ORA-00001: restrição exclusiva (WYLLIANEDOCS.UK_N130NFE_0) violada
Senior.SapiensNfe.Processos.Service.Nfe.Integracao.SalvaXmlHelper.SalvarXmlAssinado - Não foi possível salvar o XML da nota de chave xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx em disco
System.IO.IOException: O processo não pode acessar o arquivo 'c:\integracaosde\senior\Xml\80680093000181\Nfe Recebimento\2020\10\07\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -procNFe.xml' porque ele está sendo usado por outro processo.
Rotina / Tela: Recebimento de NF-e via e-mail.
Solução:
Solução: A situação ocorre porque o mesmo XML está sendo recebido em vários e-mails diferentes, no momento em que o XML da conta de e-mail 1 está sendo inserido, o eDocs tenta inserir o da conta 2, por ser a mesma informação ocorre a violação da UK.
Para solucionar o problema, deve-se verificar qual fornecedor e/ou rotina está disparando o mesmo XML para várias contas.
Outra alternativa é centralizar os e-mails em apenas uma conta, seja através de redirecionamento ou alteração do processo.
Importante: Essa situação não causa a falta de informação na base pois o primeiro insert é executado corretamente, o problema ocorre apenas para os demais comandos dos e-mails duplicados.