MSSQL_ENG002627
Область применения: SQL Server Управляемый экземпляр SQL Azure
Сведения о сообщении
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 2627 |
Источник событий | MSSQLSERVER |
Компонент | Компонент SQL Server Database Engine |
Символическое имя | Н/П |
Текст сообщения | Нарушение ограничения "%.*ls" для %ls. Не удается вставить повторяющийся ключ в объект "%.*ls". |
Описание
Это общая ошибка, которая может возникнуть независимо от того, реплицируется база данных или нет. В реплицируемых базах данных эта ошибка возникает, как правило, по причине неправильного управления первичными ключами в топологии. В распределенной среде необходимо убедиться в том, что одно и то же значение не вставлено в первичный ключевой столбец или в любой другой уникальный столбец на нескольких узлах. Причиной могут быть следующие факторы:
Вставки или обновления строки выполняются более чем в одном узле. И репликация слиянием, и обновляемые подписки для репликации транзакций обеспечивают обнаружение и разрешение конфликта, однако по-прежнему рекомендуется вставлять или обновлять строку только в одном узле. Одноранговые транзакции не обеспечивают обнаружение и разрешение конфликтов. Требуется, чтобы операции вставки и обновления были секционированы.
Строка была вставлена на подписчике, который должен быть доступен только для чтения. Подписчики на публикации моментальных снимков должны быть доступны только для чтения, так же как и подписчики на публикации транзакций, если только не используются обновляемые подписки или одноранговые репликации транзакций.
Используется таблица со столбцом идентификаторов, однако управление столбцом осуществляется неверно.
Действие пользователя
Действие по устранению проблемы зависит от причины, по которой она возникла:
Вставки или обновления строки выполняются более чем в одном узле.
Независимо от типа используемой репликации рекомендуется секционировать вставки и обновления везде, где это возможно, так как это уменьшит обработку данных, необходимую для обнаружения и разрешения конфликта. Секционирование вставок и обновлений является необходимым условием при использовании одноранговой репликации транзакций. Дополнительные сведения см. в разделе Peer-to-Peer Transactional Replication.
Строка была вставлена на подписчике, который должен быть доступен только для чтения.
Не выполняйте вставку или обновление строк на подписчике, если не используется репликация слиянием, репликация транзакций с обновляемыми подписками или одноранговая репликация транзакций.
Используется таблица со столбцом идентификаторов, однако управление столбцом осуществляется неверно.
При использовании репликации слиянием или репликации с обновляемыми подписками столбцы идентификаторов должны автоматически управляться репликацией. При использовании одноранговой репликации транзакций управление этими столбцами должно выполняться вручную. Дополнительные сведения см. в статье Репликация столбцов идентификаторов.