Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Berichtdetails
| Attribute | Value |
|---|---|
| Productnaam | SQL Server |
| Gebeurtenis-id | 2627 |
| Bron van gebeurtenis | MSSQLSERVER |
| Onderdeel | SQL Server-database-engine (databankmotor van SQL Server) |
| Symbolische naam | N/A |
| Berichttekst | Schending van %ls voorwaarde '%.*ls'. Kan geen dubbele sleutel invoegen in object '%.*ls'. |
Explanation
Dit is een algemene fout die kan worden opgeroepen, ongeacht of een database wordt gerepliceerd of niet. In gerepliceerde databases wordt de fout meestal veroorzaakt omdat primaire sleutels niet adequaat zijn beheerd over de topologie. In een gedistribueerde omgeving is het essentieel om ervoor te zorgen dat dezelfde waarde niet wordt ingevoegd in een primaire sleutelkolom of een andere unieke kolom op meer dan één knooppunt. Mogelijke oorzaken zijn onder andere:
Inserts en updates van een rij vinden plaats bij meer dan één knoop. Samengevoegde replicatie en updateerbare abonnementen voor transactionele replicatie bieden beide conflictdetectie en -oplossing, maar het is nog steeds beter om een bepaalde rij in te voegen of bij te werken op slechts één node. Peer-to-peer transactioneel biedt geen conflictdetectie en -oplossing; het vereist dat inserts en updates worden gepartitioneerd.
Er werd een rij ingevoegd bij een abonnee die alleen-lezen moest zijn. Abonnees van snapshotpublicaties moeten als alleen-lezen worden behandeld, net als abonnees van transactionele publicaties, tenzij updateerbare abonnementen of peer-to-peer transactionele replicatie worden gebruikt.
Er wordt een tabel met een identiteitskolom gebruikt, maar deze kolom wordt niet op de juiste manier beheerd.
Gebruikersactie
De vereiste actie hangt af van de reden waarom de fout is gemeld:
Inserts en updates van een rij vinden plaats bij meer dan één knoop.
Ongeacht het type replicatie raden we aan om invoegingen en updates waar mogelijk te partitioneren, omdat dit de verwerking voor conflictdetectie en -oplossing vermindert. Voor peer-to-peer transactionele replicatie is partitionering van inserts en updates vereist. Zie Peer-to-Peer Transactionele replicatie voor meer informatie.
Er werd een rij ingevoegd bij een abonnee die alleen-lezen moest zijn.
Voeg geen rijen in of werk deze bij de abonnee niet bij tenzij je merge-replicatie, transactionele replicatie met updateerbare abonnementen of peer-to-peer transactionele replicatie gebruikt.
Er wordt een tabel met een identiteitskolom gebruikt, maar deze kolom wordt niet op de juiste manier beheerd.
Voor mergeerreplicatie en transactionele replicatie met updateerbare abonnementen moeten identiteitskolommen automatisch worden beheerd door replicatie. Voor peer-to-peer transactionele replicatie moeten ze handmatig worden beheerd. Zie Identiteitskolommen repliceren voor meer informatie.