Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Detalhes da Mensagem
| Attribute | Valor |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 2627 |
| Origem do evento | MSSQLSERVER |
| Componente | Mecanismo de Banco de Dados do SQL Server |
| Nome simbólico | N/A |
| Texto da mensagem | Violação da restrição %ls '%.*ls'. Não é possível inserir chave duplicada no objeto '%.*ls'. |
Explanation
Este é um erro geral que pode ser levantado independentemente de uma base de dados ser replicada ou não. Em bases de dados replicadas, o erro é tipicamente gerado porque as chaves primárias não foram geridas adequadamente em toda a topologia. Num ambiente distribuído, é essencial garantir que o mesmo valor não é inserido numa coluna de chave primária ou em qualquer outra coluna única em mais do que um nó. As possíveis causas incluem as seguintes:
Inserções e atualizações numa linha ocorrem em mais do que um nó. A replicação por fusão e as subscrições atualizáveis para replicação transacional fornecem ambas deteção e resolução de conflitos, mas continua a ser preferível inserir ou atualizar uma dada linha apenas num nó. A transação peer-to-peer não proporciona deteção e resolução de conflitos; requer que as inserções e atualizações sejam particionadas.
Uma linha era inserida num assinante que deveria ser apenas leitura. Os subscritores de publicações snapshot devem ser tratados como apenas leitura, assim como os subscritores de publicações transacionais, a menos que sejam utilizadas subscrições atualizáveis ou replicação transacional peer-to-peer.
Está a ser utilizada uma tabela com uma coluna identidade, mas a coluna não é gerida adequadamente.
Ação do Usuário
A ação necessária depende da razão pela qual o erro foi levantado:
Inserções e atualizações numa linha ocorrem em mais do que um nó.
Independentemente do tipo de replicação utilizada, recomendamos que particione as inserções e atualizações sempre que possível, pois isso reduz o processamento necessário para a deteção e resolução de conflitos. Para a replicação transacional peer-to-peer, é necessário particionar inserções e atualizações. Para obter mais informações, consulte Replicação transacional ponto a ponto.
Uma linha era inserida num assinante que deveria ser apenas leitura.
Não insira nem atualize linhas no Assinante a menos que esteja a usar replicação por fusão, replicação transacional com subscrições atualizáveis ou replicação transacional peer-to-peer.
Está a ser utilizada uma tabela com uma coluna identidade, mas a coluna não é gerida adequadamente.
Para replicação por fusão e replicação transacional com subscrições atualizáveis, as colunas de identidade devem ser geridas automaticamente por replicação. Para a replicação transacional peer-to-peer, devem ser geridos manualmente. Para obter mais informações, consulte Replicar colunas de identidade.