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