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