Проблема с репликацией - помогите!

ПолныйЧайНик
Дата: 19.12.2000 11:17:34
MSSQL 7.0 Делаю репликацию всей базы. Snapshot генерится нормально, а вот Distribution Агент потом ругается - FOREIGN KEY-и ему мешают в таблицах. Все FOREIGN KEY-и <NOT FOR REPLICATION>, но все равно ни чего не получается. Помогите!
Kenat
Дата: 19.12.2000 11:35:35
Как дети. ))))
В течении 2 лет всё работает как часики и с тиггерами и foreign key и кольцевыми репликациями.
Сделай отдельно репликации связанных таблиц и увидишь где ошибся.
ПолныйЧайНик
Дата: 19.12.2000 13:33:14
Я верю! Я верю, что работает!
Зачем же сразу так. Но почему, почему нельзя по-бук-вам растолковать, step-by-step, для бедного тормозного ПолногоЧайНика.
ПолныйЧайНик.
Garya
Дата: 21.12.2000 18:35:01
Скорее всего, проблема в DRI. Процедуры репликации пытаются затолкать в таблицы на стороне "многие" записи ДО того, как в таблицы на стороне "один" помещены записи, на которые они могут сослаться. Покрути параметры связей DRI, проверь последовательность передачи записей при репликации. Сначала должны реплицироваться таблицы на стороне "один", а затем уже на стороне "многие".
sky
Дата: 14.04.2003 18:15:20
ТОлько что при проведении репликации столкнулся с почти аналогичной проблемой: на подписчике были удалены куча записей, хотя должны были быть перенесены на издатель. То есть суть в том, что забивались записи на подписчике, а после репликации по идее должны быть и там и там. а получилось, что записи на подписчике удалились самым наглым образом.
Может ли быть такое из-за :
Процедуры репликации пытаются затолкать в таблицы на стороне "многие" записи ДО того, как в таблицы на стороне "один" помещены записи, на которые они могут сослаться.
И если да, то поможет ли снятие флага Enforce Relationship for Replication?
Garya
Дата: 14.04.2003 19:27:06
Что там сначала должно быть, а что потом - это бабушка на двое сказала. Если записи удаляются, то удалиться они должны сначала на стороне "многие", а потом уже на стороне "один". Если записи добавляются, то наоборот - сначала они должны добавиться на стороне "один", а потом уже на стороне "многие". Чтобы не заморачиваться над всеми этими вопросами, сними в свойствах связи флажок Enforce Relationship for Replication.
Сергей Тихонов
Дата: 14.04.2003 19:57:31
> ПолныйЧайНик

Если у вас такое происходит, значит есть нарушения DRI в БД.
На публикаторе оно не проявилось потому, что FK были созданы, скорее всего, с опцией WITH NOCHECK. Когда генерятся скрипты снэпшота, этого не происходит. проверьте свои данные...
Garya
Дата: 14.04.2003 20:28:47
2 Сергей Тихонов. Да нет. У меня подобные вещи проявлялись в версии 7.0, когда с данными было все в порядке. Просто механизмы репликации не разбираются в вопросах, в какой последовательности информация должна добавляться в таблицы и в каких удаляться. Кроме того, зачастую они операцию update могут заменить парой операций delete и insert, что в промежутке между ними также может привести к временному нарушению ссылочной целостности.
cvasil
Дата: 15.04.2003 01:24:42
Я обычно внешние ключи накатываю на подписчика уже после приложения снэпшота.
Естественно все с опциями "not for replication".