Forum
See question

tabelas temporarias   

32 views
0
♥ 0

Boa tarde

Reparei que tenho milhares de tabela com o Nome IntegraContabilidadeAsync0637e07aa77e11f1ad9780e82cc950b1. Isto deve ser bug?

Faça login para poder traduzir
Evolution
Primavera
Marked as spam
Criado há 2 dias e 1 hora mariagouveia
m
mariagouveia Maria Gouveia Responsiveness Member
1 answers
1
Private answer

Sim, esse comportamento está associado a uma anomalia já identificada no BOT de integrações assíncronas da contabilidade do Cegid Primavera.

Em condições normais:

  • Cada tarefa do BOT para reintegrar documentos cria uma tabela IntegraContabilidadeAsync + ID com os registos a processar.
  • Depois de a tarefa ser executada com sucesso, essa tabela é automaticamente eliminada.

Quando ficam milhares de tabelas IntegraContabilidadeAsync na base de dados, é porque:

  • Existem tarefas do BOT pendentes (não processadas) ou
  • Foi/é afetado por uma anomalia em que as tabelas não são apagadas no fim do processamento.

1. Validar se existem tarefas pendentes do BOT

Na base de dados PRIEMPRE, execute:

select * from bot.BotWorkQueueItems
where TopicId = 'DeferredPostingsTopic'

Em particular, verifique:

  • Registos com State <> 2 (2 = tarefa processada).
  • No campo Scope encontra o nome da tabela temporária associada a cada tarefa.

Enquanto existirem tarefas com State <> 2, as tabelas associadas não são removidas.

2. Atualizar o BOT / versão do ERP

  • Houve anomalias conhecidas em que as tabelas IntegraContabilidadeAsync não eram eliminadas automaticamente.
  • Deve garantir que:
    • O Cegid Primavera está atualizado (build mais recente da sua linha de produto).
    • O BOT está também na versão mais recente disponível para essa instalação.

3. Limpar as tabelas obsoletas em segurança

Depois de garantir que o BOT está atualizado e a funcionar, pode limpar as tabelas antigas. Há dois cenários:

a) Limpar todas as tabelas temporárias (quando já não há tarefas pendentes)

Use um script do tipo:

BEGIN TRAN
DECLARE @vSQL nvarchar (4000)
DECLARE @TMP nvarchar (4000)
DECLARE curRegistos CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR
SELECT name FROM sysobjects
WHERE name like 'IntegraContabilidadeAsync%' or name like 'CBLTempIntra%'
OPEN curRegistos
FETCH NEXT FROM curRegistos INTO @TMP
WHILE @@FETCH_STATUS = 0
BEGIN
SET @vSQL = ' DROP TABLE IF EXISTS ' + @TMP + '; '
EXEC sp_executesql @vSQL
FETCH NEXT FROM curRegistos INTO @TMP
END
CLOSE curRegistos
DEALLOCATE curRegistos
COMMIT

b) Limpar apenas tabelas não referenciadas em tarefas do BOT

Se quiser garantir que não apaga nenhuma tabela ainda associada a tarefas em Bot.BotWorkQueueItems, pode usar um script que só elimina as que não estão referenciadas:

DECLARE @vSQL nvarchar (4000)
DECLARE @TMP nvarchar (200)
DECLARE curRegistos CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
AND sobjects.name LIKE '%IntegraContabilidadeAsync%'
OPEN curRegistos
FETCH NEXT FROM curRegistos INTO @TMP
WHILE @@FETCH_STATUS = 0
BEGIN
-- Se a tabela não existe referenciada em nenhum workQueueItem
IF NOT EXISTS (
SELECT 1
FROM PRIEMPRE.Bot.BotWorkQueueItems
WHERE TopicId = 'DeferredPostings Topic'
AND JSON_VALUE(scope,'$.Temp') LIKE '%'+@TMP+'%'
)
BEGIN
SET @vSQL = ' DROP TABLE IF EXISTS ' + @TMP + '; '
EXEC sp_executesql @vSQL
END
FETCH NEXT FROM curRegistos INTO @TMP
END
CLOSE curRegistos
DEALLOCATE curRegistos

4. Recomendações práticas

  • Faça sempre backup da base de dados antes de executar estes scripts.
  • Execute primeiro a consulta a Bot.BotWorkQueueItems para perceber se há tarefas pendentes e se o BOT está a processar corretamente.
  • Depois de atualizar o BOT/ERP e limpar as tabelas antigas, monitorize se continuam a acumular-se novas tabelas; se sim, deverá ser analisado em detalhe (abrir pedido de suporte).

Resumindo: sim, a existência de milhares de tabelas IntegraContabilidadeAsync é sintoma de tarefas do BOT não concluídas ou de uma anomalia antiga. Não é o comportamento esperado e deve ser corrigido com atualização do BOT/ERP e limpeza das tabelas temporárias.

Esta resposta foi gerada pelo Cegid Pulse, com base na base na informação disponível em histórico.
Ajude-nos a melhorar esta funcionalidade:
• Se a resposta corresponde à sua questão, assinale-a com "Mark as best answer",
• Se a resposta estiver incorreta, dê-lhe um voto negativo e aguarde a resposta da comunidade.

Faça login para poder traduzir
Marked as spam
Criado há 2 dias e 1 hora cegidpulse
cegidpulse Cegid Pulse Most Valuable Professional