Поделиться через


MSSQL_ENG020598

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

Атрибут Значение
Название продукта SQL Server
ИД события 20598
Источник событий MSSQLSERVER
Компонент Компонент SQL Server Database Engine
Символическое имя
Текст сообщения При применении реплицированной команды строка на подписчике не была найдена.

Описание

Данная ошибка возникает в репликации транзакций, если строка, которую агент распространителя пытается обновить на подписчике, была удалена или ее первичный ключ был изменен. По умолчанию для подписчиков все подписки на публикацию транзакций доступны только для чтения, так как все изменения нельзя применить на издателе. В случае с репликацией транзакций пользователь должен вносить изменения на подписчике только при использовании обновляемых подписок или одноранговой репликации. Сведения об этих параметрах см. в разделе Updatable Subscriptions for Transactional Replication и Peer-to-Peer Transactional Replication.

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

Чтобы разрешить эту проблему:

  1. Если в ходе репликации был обнаружен источник ошибки, но репликация при этом должна быть продолжена, укажите параметр -SkipErrors 20598 для агента распространителя. Это позволит агенту пропустить изменения, приведшие к ошибке 20598, но разрешит при этом репликацию других изменений.

  2. Определите на подписчике строки, которые были удалены или имеют первичный ключ, отличный от первичного ключа соответствующих строк на издателе. При помощи tablediff Utility можно определить, какие строки в базах данных публикации и подписки отличаются. Сведения об использовании этой служебной программы с реплицированными базами данных см. в разделе "Сравнение реплицированных таблиц для различий (программирование репликации)".

  3. Используя программу tablediff или другой способ, внесите необходимые исправления в строки подписчика.

  4. Удалите параметр -SkipErrors (необязательно).