Нарушения целостности репликации SQL Server 2005 SQL Server, номер ошибки: 28549 - PullRequest
2 голосов
/ 10 февраля 2011

Я надеюсь, что кто-то может помочь мне с действительно странной проблемой.

Когда пользователи синхронизируют свое устройство, они получают эту ошибку:

Операция строки не может быть повторно применена из-за нарушения целостности. Проверьте Фильтр публикации. [Таблица = ASSET_DETAIL, Operation = Вставить / Обновить, RowGuid = {C92038E4-18EA-EE11-4C9F-2952CDECFCC7} ] HRESULT 0x80040E2F (28549)

Когда мы идем на сервер и запрашиваем эту строку, и ее родительская строка (таблица называется Активом) представляется действительной и правильной. Когда мы исследуем полное дерево фильтров (для лучшего описания), все данные представляются правильными.

Из того, что мы можем видеть в нашей БД, данные, которые должны направляться абоненту, подчиняются ограничениям ссылочной целостности, установленным в вашей БД. Он также подчиняется фильтру публикации.

Есть ли причина, по которой мы могли бы получить эту проблему на подписчике? И как мы можем решить это?

Кроме того, возможно ли регистрировать, какие именно данные отправляются на устройство - если не данные, операторы, выполняемые для файла sdf, чтобы определить, как это происходит?

Заранее спасибо за помощь,

Morrislgn

Ответы [ 3 ]

2 голосов
/ 11 февраля 2011

Не уверен, что это технически ответ, но это ответ на проблему, с которой мы столкнулись.

Мы обнаружили, что коллега удалил отношение FK в нашей БД и не стал никому рассказывать об этом. Поэтому, когда мы смотрели на БД и данные, все было в порядке.

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

Итак, ответ в этом случае состоял в том, чтобы проверить схему с отдельной БД.

1 голос
/ 10 февраля 2011

Команды, как правило, применяются на подписчике с помощью хранимых процедур. Запустите профилировщик, когда ваш подписчик подключится, чтобы увидеть, что работает и с какими параметрами. Это может дать вам ключ к пониманию того, что происходит. Я не могу быть более конкретным, к сожалению.

0 голосов
/ 28 июля 2011

Имеет ли это какое-либо отношение к использованию условия «Не для репликации» в вашем ограничении.См. http://msdn.microsoft.com/en-us/library/ms180843.aspx или http://msdn.microsoft.com/en-us/library/ms152529.aspx

Так что при использовании репликации, скажем, OrderHeaders и OrderLines, репликация может вставить OrderLines в вашего подписчика до записи Orderheader, и тогда вы получите нарушение.

Указание Not For Replication означает, что проверки ограничений не выполняются, когда строки вставляются через систему репликации, как они уже были выполнены в издателе.

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