Ошибка репликации SQL: «Строка не найдена у подписчика», но она указывает на таблицу другой публикации - PullRequest
0 голосов
/ 14 мая 2019

В мониторе репликации появляется следующая ошибка:

Строка не найдена на подписчике при применении реплицированной команды UPDATE для таблицы '[dgv]. [POSCustomer]' с первичным ключом =

Ошибка на самом деле не в отсутствующей строке, а в том, что в схеме таблицы указано dgv.

Предполагается, что публикация, сгенерировавшая ошибку, будет реплицирована только на [ppv].[POSCustomer] и даже не должна знать о [dgv].[POSCustomer].И затрагиваются только строки, созданные ПОСЛЕ первоначального снимка.

Фон:

Я настраиваю репликацию транзакций для 3 локальных баз данных PPVDGV и PAC для одной базы данных SQL Azure.

Три базы данных принадлежат разным юридическим лицам на двух отдельных серверах (PPV на одном, DGV и PAC на другом) и имеют идентичные схемы.

Таблицы с одинаковыми именами из каждого dbs настроены для репликации.

Чтобы дифференцировать их в целевых БД, я поместил их в три разные схемы, используя название их исходных БД, т.е. ppv.POSCustomer, dgv.POSCustomer, pac.POSCustomer.

Это делается путем изменения настройки Publication properties -> Articles -> Article properties -> Destination владельца объекта.

Исходные снимки доставляются без проблем;однако через некоторое время row was not found начал появляться в мониторе репликации.

Я пытался повторно инициализировать подписки несколько раз, но ошибка продолжает появляться после доставки снимка.

Все строки, созданные после доставки снимков, будут затронуты.

Базы данных полностью изолированы друг от друга, нет перекрестных запросов к базе данных, нет хранимых процедур, нет триггеров, которые говорят, что запись из PPV.dbo.POSCustomer должна быть обновлена ​​в DGV.dbo.POSCustomer, так что я нахожусь наПотеря как причина этой ошибки.

Я использовал sp_browsereplcmd, чтобы отследить команду, которая вызвала ошибку, что приводит меня к:

{CALL [sp_MSupd_dboPOSCustomer] (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2019-05-14 00: 00: 00.000,, 27280000.0000,10 ,,,,,,,,,,, 2019-05-14 18: 30: 04.000 ,,,,,,,,,,,,,,,,,,,, N'vinhn4-00001395 ', 0x00000000d000080000)}

, который я не понимаю, и sp не является частью нашего POS приложения.

Как я могу устранить эту ошибку?Вставка пропущенных строк вручную не будет работать, поскольку затронуты все новые строки.Включение -skiperrors не вариант.Раньше репликация в разные целевые базы данных была успешно выполнена, но настройка межбазы данных является такой проблемой в Azure SQL, что я предпочел бы избегать \ если возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...