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


MSSQL_ENG020598

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

Название продукта

SQL Server

Версия продукта

10.50

Номер построения продукта

 

Идентификатор события

20598

Источник события

MSSQLSERVER

Компонент

SQL Server Database Engine

Символическое имя

Текст сообщения

При выполнении команды на репликацию, строка на подписчике не была найдена.

Объяснение

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

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

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

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

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

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

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