Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сведения о сообщении
| Название продукта | SQL Server |
| Идентификатор события | 20598 |
| Источник события | MSSQLSERVER |
| Компонент | Система управления базами данных SQL Server |
| Символическое имя | |
| Текст сообщения | Строка не найдена у подписчика при применении команды репликации. |
Объяснение
Эта ошибка возникает при репликации транзакций, если агент распространителя пытается обновить строку на подписчике, но строка была удалена или первичный ключ строки был изменен. По умолчанию подписчик на транзакционные публикации должен рассматриваться как только для чтения, так как изменения не распространяются обратно к издателю. Для репликации транзакций на подписчике необходимо вносить изменения только в том случае, если используется обновляемая подписка или одноранговая репликация. Дополнительные сведения об этих параметрах см. в разделе Обновляемые подписки для репликации транзакций и одноранговой репликации транзакций.
Действие пользователя
Чтобы устранить эту проблему, выполните указанные ниже действия.
Если репликация должна продолжаться при определении источника ошибки, укажите параметр -SkipErrors 20598 для агента распространителя. Это позволяет агенту пропускать изменения, которые приводят к ошибке 20598, позволяя реплицировать другие изменения.
Определите, какие строки у Получателя были удалены или имеют первичный ключ, отличный от ключа соответствующих строк у Публикатора. Служебная программа tablediff позволяет определить, какие строки отличаются в базах данных публикации и подписки. Сведения об использовании этой служебной программы с реплицированными базами данных см. в разделе "Сравнение реплицированных таблиц для различий (программирование репликации)".
Исправьте строки на подписчике с помощью служебной программы tablediff или другого метода.
(Необязательно) Удалите параметр -SkipErrors .