MSSQL_ENG002627

Сведения о сообщении

Название продукта SQL Server
Идентификатор события 2627
Источник события MSSQLSERVER
Компонент Система управления базами данных SQL Server
Символическое имя Не применимо
Текст сообщения Нарушение ограничения "%.*ls" для %ls. Не удается вставить повторяющийся ключ в объект "%.*ls".

Объяснение

Это общая ошибка, которая может быть вызвана независимо от того, реплицируется ли база данных. В реплицированных базах данных ошибка обычно возникает, так как первичные ключи не управляются соответствующим образом в топологии. В распределенной среде важно убедиться, что одно и то же значение не вставляется в столбец первичного ключа или любой другой уникальный столбец на нескольких узлах. Причиной могут быть следующие факторы:

  • Вставка и обновление строки происходят на нескольких узлах. Репликация слиянием и обновляемые подписки для транзакционной репликации обеспечивают обнаружение конфликтов и разрешение конфликтов, но все же предпочтительно вставлять или обновлять указанную строку только на одном узле. Одноранговая транзакционная модель не обеспечивает обнаружение и разрешение конфликтов; для этого требуется разделять вставки и обновления.

  • Строка была вставлена на подписчике, который должен быть только для чтения. Подписчики публикаций моментальных снимков должны рассматриваться как доступные только для чтения, как и подписчики транзакционных публикаций, если не используется обновляемая подписка или одноранговая репликация транзакций.

  • Используется таблица со столбцом идентификаторов, но столбец управляется ненадлежащим образом.

Действие пользователя

Необходимое действие зависит от причины возникновения ошибки:

  • Вставка и обновление строки происходят на нескольких узлах.

    Независимо от типа репликации, которую вы используете, мы рекомендуем по возможности разбивать вставки и обновления на сегменты, так как это позволяет сократить обработку, необходимую для обнаружения и разрешения конфликтов. Для одноранговой репликации транзакций требуется секционирование вставок и обновлений. Дополнительные сведения см. в разделе " Одноранговая репликация транзакций".

  • Строка была вставлена на подписчике, который должен быть только для чтения.

    Не вставлять или обновлять строки на подписчике, если вы не используете репликацию слиянием, репликацию транзакций с обновляемыми подписками или одноранговую репликацию транзакций.

  • Используется таблица со столбцом идентификаторов, но столбец не управляется правильно.

    Для репликации слиянием и транзакционной репликации с обновляемыми подписками столбцы идентификаторов должны управляться репликацией автоматически. Для одноранговой репликации транзакций они должны управляться вручную. Дополнительные сведения см. в разделе "Репликация столбцов удостоверений".

См. также

Справочник по ошибкам и событиям (репликация)
Репликация слиянием
Транзакционная репликация по принципу 'от равного к равному'
Обновляемые подписки для репликации транзакций