MSSQL_ENG002627

Dotyczy:SQL ServerAzure SQL Managed Instance

Szczegóły wiadomości

Attribute Wartość
Nazwa produktu SQL Server
Identyfikator zdarzenia 2627
Źródło zdarzenia MSSQLSERVER
Składnik Mechanizm Bazy Danych SQL Server
Nazwa symboliczna N/A
Tekst wiadomości Naruszenie ograniczenia %ls "%.*ls". Nie można wstawić zduplikowanego klucza w obiekcie "%.*ls".

Explanation

Jest to błąd ogólny, który może wystąpić niezależnie od tego, czy baza danych jest replikowana. W bazach danych replikowanych błąd jest zazwyczaj zgłaszany, ponieważ klucze pierwotne nie zostały odpowiednio zarządzane w całej topologii. W środowisku rozproszonym kluczowe jest zapewnienie, że ta sama wartość nie zostanie wstawiona do kolumny klucza głównego ani żadnej innej unikalnej kolumny na więcej niż jednym węźle. Możliwe przyczyny obejmują następujące elementy:

  • Wstawiania i aktualizacje wiersza zachodzą w więcej niż jednym węźle. Replikacja scalania oraz aktualizowalne subskrypcje do replikacji transakcyjnej zapewniają wykrywanie i rozwiązywanie konfliktów, ale nadal preferuje się wstawianie lub aktualizowanie danego wiersza tylko w jednym węźle. Transakcyjne peer-to-peer nie zapewniają wykrywania i rozwiązywania konfliktów; wymaga podziału wstawek i aktualizacji.

  • Wiersz został dodany do abonenta, który powinien być tylko do odczytu. Subskrybenci publikacji snapshot powinni być traktowani jako tylko do odczytu, podobnie jak subskrybenci publikacji transakcyjnych, chyba że stosuje się aktualizowalne subskrypcje lub replikację transakcyjną peer-to-peer.

  • Używana jest tabela z kolumną tożsamości, ale kolumna nie jest odpowiednio zarządzana.

Akcja użytkownika

Wymagane działanie zależy od powodu zgłoszenia błędu:

  • Wstawiania i aktualizacje wiersza zachodzą w więcej niż jednym węźle.

    Niezależnie od rodzaju zastosowanej replikacji, zalecamy partycjonowanie wstawiań i aktualizacji, gdy tylko to możliwe, ponieważ zmniejsza to przetwarzanie potrzebne do wykrywania i rozwiązywania konfliktów. Do replikacji transakcyjnej peer-to-peer wymagane są wstawiania i aktualizacje partycjonowania. Aby uzyskać więcej informacji, zobacz Peer-to-Peer Transactional Replication.

  • Wiersz został dodany do abonenta, który powinien być tylko do odczytu.

    Nie wstawiaj ani nie aktualizuj wierszy w Subscriber, chyba że korzystasz z replikacji scalania, replikacji transakcyjnej z aktualizowalnymi subskrypcjami lub replikacji transakcyjnej peer-to-peer.

  • Używana jest tabela z kolumną tożsamości, ale kolumna nie jest odpowiednio zarządzana.

    Dla replikacji scalania i replikacji transakcyjnej z subskrypcjami podlegającymi aktualizacjom, kolumny tożsamości powinny być zarządzane automatycznie przez replikację. Dla replikacji transakcyjnej peer-to-peer muszą być zarządzane ręcznie. Aby uzyskać więcej informacji, zobacz Replikowanie kolumn tożsamości.