Есть несколько способов. Я расскажу вам легкий (потому что я ленив). Поместите трассировку на подписчика для выполнения неудачных процедур хранимой процедуры. Вы должны получить хит для одного, который называется что-то вроде sp_MSdel_table (где table - это имя вашей таблицы). Аргумент (ы) этой процедуры будет основным ключом записи, которую он пытается удалить.
Легкий способ номер два, чтобы модифицировать sproc определены в предыдущем методе, не сердись на недостающий подряд (в конце концов, это просто будет удалить его, так тот факт, что это он сейчас отсутствует не что большой сделка). У вас могут быть другие проблемы, связанные с конвергенцией, но, по крайней мере, вы можете снова вернуть свои команды. (EDIT: Просто заметили причину вашей проблемы. Я бы посоветовал не иметь ограничений FK у подписчика, так как всякая ссылочная целостность должна быть решена у издателя. Я сделаю вашу репликацию быстрее, когда SQL не нужно проверять что каждый раз, когда он применит вставку, обновление или удаление).
Жесткий путь номер один включает в себя просмотр ошибки в мониторе репликации, отмечая, что указан идентификатор транзакции и порядковый номер. Затем вы используете sproc в базе данных распространения, чтобы получить текст выполняемой команды.
Жесткий путь номер два включает в себя различие таблиц либо с tablediff.exe, что-то вроде SQLCompare от RedGate, либо с рулоном-присоединением к связанным серверам, чтобы показать разницу. Храните это в своем заднем кармане на всякий случай, если один из других методов с одним рядом друг с другом, упомянутый выше, не сделает это за вас. Мой порог для таких вещей составляет около трех. YMMV.