MSSQL_ENG020598

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

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

Объяснение

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

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

Чтобы устранить эту проблему, выполните указанные ниже действия.

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

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

  3. Исправьте строки на подписчике с помощью служебной программы tablediff или другого метода.

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

См. также

Справочник по ошибкам и событиям (репликация)