MSSQL_ENG002627

Platí na:SQL ServerAzureSQL Managed Instance

Podrobnosti zprávy

Attribute Value
Název produktu SQL Server
ID události 2627
Zdroj události MSSQLSERVER
Součást Databázový stroj systému SQL Server
Symbolický název N/A
Text zprávy Porušení omezení %ls '%.*ls'. Do objektu%.*ls nelze vložit duplicitní klíč.

Explanation

Jde o obecnou chybu, která může být nahlášena bez ohledu na to, zda je databáze replikována. V replikovaných databázích je chyba obvykle vyvolána proto, že primární klíče nebyly správně spravovány napříč topologií. V distribuovaném prostředí je nezbytné zajistit, aby stejná hodnota nebyla vložena do sloupce primárního klíče nebo jakéhokoli jiného unikátního sloupce u více než jednoho uzlu. Mezi možné příčiny patří:

  • Vklady a aktualizace řádku probíhají na více než jednom uzelu. Replikace sloučení a aktualizovatelná předplatné pro transakční replikaci poskytují detekci a řešení konfliktů, ale stále je lepší vkládat nebo aktualizovat daný řádek pouze na jednom uzlu. Transakční systém mezi uživateli neposkytuje detekci a řešení konfliktů; vyžaduje, aby inserty a aktualizace byly rozděleny na části.

  • Na předplatitele byl vložen řádek, který měl být pouze pro čtení. Předplatitelé snapshot publikací by měli být považováni pouze za čtení, stejně jako předplatitelé transakčních publikací, pokud nejsou použity aktualizovatelné předplatné nebo peer-to-peer transakční replikace.

  • Používá se tabulka s identifikačním sloupcem, ale sloupec není správně spravován.

Uživatelská akce

Požadovaný postup závisí na důvodu chyby:

  • Vklady a aktualizace řádku probíhají na více než jednom uzelu.

    Bez ohledu na typ použité replikace doporučujeme kdykoli je to možné, abyste oddílili vkládání a aktualizace, protože to snižuje zpracování potřebné k detekci a řešení konfliktů. Pro transakční replikaci mezi uživateli je vyžadováno rozdělení vkladů a aktualizací. Další informace najdete v tématu Transakční replikace peer-to-peer.

  • Na předplatitele byl vložen řádek, který měl být pouze pro čtení.

    Nevkládejte ani neaktualizujte řádky na Subscriber, pokud nepoužíváte replikaci sloučení, transakční replikaci s aktualizovatelnými předplatnými nebo peer-to-peer transakční replikaci.

  • Používá se tabulka s identifikačním sloupcem, ale sloupec není správně spravován.

    Pro replikaci sloučení a transakční replikaci s aktualizovatelnými odběry by měly být sloupce identity automaticky spravovány replikací. Pro peer-to-peer transakční replikaci musí být spravovány ručně. Další informace najdete v tématu Replikace sloupců identit.