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