Forum
See question

A atualizar versão 781106 para 781107 – erro aos 35%   

67 views
0
0

Boa tarde,

Ao tentar atualizar uma BD, chega aos 35% e não continua, dá o Erro ao abrir a empresa (print em anexo)

 

Conteudo do log:

[23/11/2022] ActualizaBaseDados INICIO.
[23/11/2022] A atualizar versão 781106 para 781107
A executar bloco 1…… OK!
A executar bloco 2…… OK!
A executar bloco 3…… OK!
A executar bloco 4…… OK!
A executar bloco 5…… OK!
A executar bloco 6…… OK!
A executar bloco 7…… OK!
A executar bloco 8…… OK!
A executar bloco 9…… OK!
A executar bloco 10…… OK!
A executar bloco 11…… ERRO!
A DML statement encountered a missing entry in index ID 1 of table ID 469576711, in the database ‘PRIMATERSILVA’ due to an interaction with another transaction. If you continue to see this error, consider using Repeatable Read or higher isolation level.
The statement has been terminated.
*** LOTE INICIO ***

IF (dbo.STD_FieldExists(‘CabecDocStatus’, ‘DocEnviadoEmail’) = 0)
BEGIN
ALTER TABLE CabecDocStatus ADD DocEnviadoEmail BIT NOT NULL CONSTRAINT CabecDocStatus_DocEnviadoEmail_DF DEFAULT(0) WITH VALUES
END
*** LOTE FIM ***

…ERRO!
0: 9999, ExecutaBatchSQL, Erro ao efetuar atualização

 

Ao correr a instrução SQL diretamente no Management Studio dá o mesmo erro:

A DML statement encountered a missing entry in index ID 1 of table ID 469576711, in the database ‘PRIMATERSILVA’ due to an interaction with another transaction. If you continue to see this error, consider using Repeatable Read or higher isolation level.
The statement has been terminated.

 

O que fazer para ultrapassar e atualizar a BD?

Obrigado.

Faça login para poder traduzir
Plataforma
Primavera
Attachments:
Marked as spam
Criado há 3 anos e 5 meses heliobaltasar
heliobaltasar Loyal Contributor
2 answers
0
Private answer

Aqui vai o txt com os erros que "dbcc checkdb" devolveu

Faça login para poder traduzir
Marked as spam
Criado há 3 anos e 5 meses heliobaltasar
heliobaltasar Loyal Contributor
    1
    Private answer

    O primeiro diagnóstico que recomendo é o da integridade da base de dados.

    Executar o comando: "dbcc checkdb".

    A versão do SQL é uma versão suportada pelo ERP?

    Outra validação passa por garantir que ao adicionar esta constraint não vai violar a chave. Aparenta ser esta situação.

    Faça login para poder traduzir
    Marked as spam
    Criado há 3 anos e 5 meses armandogonalves
    armandogonalves Most Valuable Professional
      Comments
      Boa tarde Armando. Obrigado pela resposta, mas infelizmente não resolveu. - Corri o comando "dbcc checkdb" por 2 vezes - É o SQL 2019 (15.0.2095.3) Questão: Como garantir que ao adicionar a constraint não vai violar a chave? Obrigado
      3 anos e 5 meses
      heliobaltasar
        @heliobaltasar, O que pretendo saber é se nesse diagnóstico apresenta algum erro. Essa script adiciona uma constraint: ”IF (dbo.STD_FieldExists(‘CabecDocStatus’, ‘DocEnviadoEmail’) = 0) BEGIN ALTER TABLE CabecDocStatus ADD DocEnviadoEmail BIT NOT NULL CONSTRAINT CabecDocStatus_DocEnviadoEmail_DF DEFAULT(0) WITH VALUES END” e se tiver registos em duplicado não vai ser adicionada.
        3 anos e 5 meses
        armandogonalves
          Ok, sim apresenta erros: Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page (1:304736). Test (hdr->m_headerVersion == Page::HEADER_7_0) failed. Values are 0 and 1. Vou colocar o .txt em anexo
          3 anos e 5 meses
          heliobaltasar
            Se o comando "DBCC CHECKDB ('prixxxxx', REPAIR_ALLOW_DATA_LOSS)" não resolve o problema automaticamente só recorrendo a um serviço especializado de recuperação da base de dados. Esse registo em erro terá de ser removido.
            3 anos e 5 meses
            armandogonalves
              Boa tarde @armandogonalves , Muito obrigado, Resolveu :)
              3 anos e 5 meses
              heliobaltasar