Mensagem de erro quando tenta registar transacções de contabilidade analítica ou guardar um modelo global de registo no Microsoft Dynamics GP: "Não é possível inserir chave duplicada no objecto 'AAGXXXXX'"

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

897280
Sintomas
Quando tenta registar transacções de contabilidade analítica no Microsoft Dynamics GP, poderá receber a seguinte mensagem de erro:

[Microsoft] [Controlador ODBC SQL Server] [Servidor SQL] Violação de chave primária sempre 'PKAAG30000', não é possível inserir a chave duplicada no objecto 'AAG30003'

Nota
nesta mensagem de erro, AAG30000 é um marcador de posição para a tabela. A palavra "sempre" é um erro ortográfico "restrição."

A mensagem de erro que recebe pode conter uma das seguintes tabelas:
  • AAG00103
  • AAG00500
  • AAG00600
  • AAG00601
  • AAG00602
  • AAG00603
  • AAG00400
  • AAG00401
  • AAG00201
  • AAG00310
  • AAG00900
  • AAG00901
  • AAG00902
  • AAG00903
  • AAG10000
  • AAG10001
  • AAG10002
  • AAG10003
  • AAG20000
  • AAG20001
  • AAG20002
  • AAG20003
  • AAG30000
  • AAG30001
  • AAG30002
  • AAG30003
Causa
Este problema ocorre porque o seguinte valor disponível (aaRowID) indicado para esta tabela (aaTableID) na tabela AAG00102 já foi utilizado na tabela aplicável (ou série de tabelas de delegação).

Por exemplo, a tabela '30000' na tabela AAG00102 será observe as tabelas de AAG30000, AAG30001, AAG30002 e AAG30003, por isso certifique-se de que verificar todas as tabelas da série para a tabela aplicável.



Resolução
Para contornar este problema, utilize um dos seguintes métodos abaixo para comparar o valor mais alto utilizado na tabela de AA (e sub-tabelas) contra o seguinte valor disponível armazenado na tabela AAG00102.

Nota Antes de seguir as instruções neste artigo, certifique-se de que tem uma cópia de segurança completa da base de dados que pode restaurar se ocorrer um problema.

Método 1 - utilizar Script de SQL para actualizar valores AAG00102 para a maioria das tabelas de AA

Pode transferir um script SQL utilizando a hiperligação abaixo e executá-la no SQL Server Management Studio na base de dados de empresa actualizar automaticamente o número seguinte disponível armazenado na tabela AAG00102 em comparação com o para o último valor utilizado na tabela AA. O script irá observar as seguintes tabelas: AAG10000, AAG20000, AAG30000, AAG00201, AAG00400, AAG00401, AAG00500, AAG00600, AAG00900 e AAG00903. Para que observa a maior parte das tabelas AA, mas não todos e não subsuperfícies, tabelas de uma série. Para obter o script, visite o seguinte Web site da Microsoft:

https://mbs.microsoft.com/Files/Customer/GP/downloads/ServicePacks/AA_Update_AAG00102.SQL

Método 2 - método Manual para investigação e de actualização, o valor AAG00102 para uma tabela de AA ao mesmo tempo

  1. Abra o SQL Server Management Studio. Para tal, clique em Iniciar, aponte para programas, aponte para Microsoft SQL Server versãoe, em seguida, clique em SQL Server Management Studio.
  2. Na janela de ligar ao SQL Server , inicie sessão SQL Server Management Studio utilizando a palavra-passe do sa.
  3. Clique sobre o Nova consulta ícone para abrir uma janela de consulta e a cópia ou escreva o seguinte script na janela de consulta. Execute na base de dados de empresa.
    select MAX (aaGLHdrID) from AAG30000*/Insert in the appropriate column/table for the aaGLHdrID and AAG30000 placeholders in the script.
  4. Tenha em atenção os resultados da consulta que mostram o valor mais elevado utilizado pela última vez na tabela. (Se a tabela tiver sub-tabelas, certifique-se verificar a mais elevada utilizada pela última vez valor os também.)
  5. Escreva o seguinte script na janela de consulta e executar na base de dados do Dynamics:
    select * from AAG00102 where CMPANYID = 'nnn'
    Nota Esta consulta, substitua o nnn Marcador de posição com o ID de empresa. Para localizar o ID da empresa, escreva a seguinte consulta na janela de consulta.
    select * from SY01500
    Seleccione a base de dados do DYNAMICS na lista na parte superior da janela e, em seguida, prima F5.
  6. Certifique-se de que o valor do campo aaRowID para o valor de aaTableID de 30000 (ou tabela adequada) é igual ou superior ao valor que anotou no passo 4.
  7. Utilize o script seguinte para actualizar o valor. Para tal, escreva o script abaixo na janela de consulta e, em seguida, prima F5.
    update aag00102 set aaROWID = 'yyyy' where aaTableID = 30000 and CMPANYID = 'zzz'
    Nota Este script, substitua o aaaa Marcador de posição com o valor que anotou no passo 4. Substituir o ZZZ Marcador de posição com o ID de empresa. Também substitua o aaTableID com a tabela adequada.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 897280 - Última Revisão: 10/23/2015 06:08:00 - Revisão: 0.5

  • Microsoft Dynamics GP 2015
  • Microsoft Dynamics GP 2013
  • Microsoft Dynamics GP 2010
  • Microsoft Dynamics GP 10.0
  • kberrmsg kbmbsmigrate kbbug kbmt KB897280 KbMtpt
Esta informação foi útil?