Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Meddelandedetaljer
| Attribute | Value |
|---|---|
| Produktnamn | SQL Server |
| Händelse-ID | 2627 |
| Händelsekälla | MSSQLSERVER |
| Component | SQL Server-databasmotor |
| Symboliskt namn | N/A |
| Meddelandetext | Brott mot %ls-begränsning "%.*ls". Det går inte att infoga dubblettnyckeln i objektet%.*ls. |
Explanation
Detta är ett allmänt fel som kan uppstå oavsett om en databas är replikerad eller inte. I replikerade databaser uppstår felet vanligtvis eftersom primärnycklar inte har hanterats korrekt över topologin. I en distribuerad miljö är det avgörande att säkerställa att samma värde inte infogas i en primärnyckelkolumn eller någon annan unik kolumn på mer än en nod. Möjliga orsaker är följande:
Insättningar och uppdateringar i en rad sker på mer än en nod. Sammanslagen replikering och uppdaterbara prenumerationer för transaktionell replikering ger båda konfliktdetektering och lösning, men det är fortfarande att föredra att infoga eller uppdatera en viss rad på endast en nod. Peer-to-peer-transaktioner erbjuder inte konfliktupptäckt och lösning; Det kräver att inserts och uppdateringar partitioneras.
En rad lades in vid en prenumerant som skulle vara skrivskyddad. Prenumeranter på snapshot-publikationer bör behandlas som skrivskyddade, liksom prenumeranter på transaktionspublikationer, såvida inte uppdaterbara prenumerationer eller peer-to-peer-transaktionell replikation används.
En tabell med en identitetskolumn används, men kolumnen hanteras inte korrekt.
Användaråtgärd
Den åtgärd som krävs beror på anledningen till att felet togs upp:
Insättningar och uppdateringar i en rad sker på mer än en nod.
Oavsett vilken typ av replikering som används rekommenderar vi att du partitionerar insättningar och uppdateringar när det är möjligt, eftersom detta minskar den bearbetning som krävs för konfliktupptäckt och lösning. För peer-to-peer transaktionell replikering krävs partitionering av insättningar och uppdateringar. Mer information finns i Peer-to-Peer Transaktionsreplikering.
En rad lades in vid en prenumerant som skulle vara skrivskyddad.
Sätt inte in eller uppdatera rader hos prenumeranten om du inte använder sammanslagen replikering, transaktionell replikering med uppdaterbara prenumerationer eller peer-to-peer-transaktionell replikering.
En tabell med en identitetskolumn används, men kolumnen hanteras inte korrekt.
För sammanslagen replikering och transaktionell replikering med uppdaterbara prenumerationer bör identitetskolumner hanteras automatiskt genom replikering. För peer-to-peer-transaktionell replikation måste de hanteras manuellt. Mer information finns i Replikera identitetskolumner.