powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Replication & foreign keys
6 сообщений из 6, страница 1 из 1
Replication & foreign keys
    #32005433
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) В merge репликации участвуют 2 таблицы - parent и child, связанные foreign key. Поймет ли SQL при различных действиях с данными, что их надо правильно обновлять ? Не получится в какой-нибудь ситуации, что сначала придут инсерты на child'ов, а потом на parent'а ? Ну и подобные ситуации...

2) Если ответ на первый вопрос, что все будет замечательно, то возникает второй: а что будет, если в таблице есть foreign key на эту же таблицу, а не на другую ? Будет ли в этом случае все нормально ?
...
Рейтинг: 0 / 0
Replication & foreign keys
    #32005443
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому вопросу.
Вариант 1. В свойствах Foreign key можно поставить Not for replication. Тогда при поступлении в первую очередь записей на стороне "многие" до того, как перекачались данные на стороне "один" ошибки возникать не должно.
Вариант 2. Явно задать последоватьельность передачи информации. Сначала Foregn Keys - потом Primary. Тогда даже временного нарушения ссылочной целостности происходить не будет.

Второй вопрос, четсно говоря, не понял.
...
Рейтинг: 0 / 0
Replication & foreign keys
    #32005453
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет not for replication для foreign key почитаю... Для primary key я знаю, как ее правильно использовать, а вот для fk пока не приходилось. По 2-му варианту встречный вопрос - каким образом для репликации задать последовательность передачи ? Разве я могу явно указать, какая таблица будет реплицироваться первой, а какая второй ?

Пояснение ко 2-му моему вопросу. Есть таблица с fk на себя же (ну вот надо мне так, никуда не денешься).
create table t1(
objectGUID uniqueidentifier not null unique,
name sysname not null unique,
ParentObjectGUID uniqueidentifier,

primary key (objectGUID),
foreign key (ParentObjectGUID) references t1 (objectGUID)
)

Будет ли для нее нормально проходить репликация ? То есть просечет ли сиквел, что какие-то из записей надо вставлять первыми (они являются родителями), а какие-то - потом (дети) ? Это же фактически дерево получается, которое хранится в одной таблице.
...
Рейтинг: 0 / 0
Replication & foreign keys
    #32005474
SergOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, что влез но у меня наверное проблема сходная.
Я не могу выполнить репликацию...
Получаю вот такое сообщение об ошибке:
Cannot truncate table 'CRTAllCharts' because it is being referenced by a FOREIGN KEY constraint.

Как это можно обойти....
...
Рейтинг: 0 / 0
Replication & foreign keys
    #32005476
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SergOK: если такое сообщение появляется в момент первой попытки синхронизации, то скорее всего это настройки для таблицы. Когда выбираешь статьи для репликации, то в детальных опциях можно указать, что делать с таблицей на подписчике, если она уже существует - и варианты действий (drop table and recreate, delete data with row filter, delete all data using truncate, keep the existing table unchanged). Возможно, у тебя как раз стоит 1, 2 или 3 вариант и прежде чем применять снапшот, сервер пытается очистить таблицу. Если же она не пустая и на нее ссылаются данные из других таблиц, то естественно очистить ее нельзя. "Обойти" это не получится - как ты обойдешь ссылочную целостность ?
Так что выбирай - или вычищай все данные, которые ссылаются на нее или ставь 4 вариант (но он тоже чреват осложнениями).

2 All:
Ну, судя по моим экспериментам, сиквел сам разбирается во внешних кличах. По крайней мере без всяких дополнительных телодвижений связанные таблицы прореплицировались без конфликтов. И кстати, для самоссылающейся таблицы тоже все прошло успешно, хотя там и было довольно большое разветвленное дерево.
...
Рейтинг: 0 / 0
Replication & foreign keys
    #32005487
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обойти ссылочную целостность можно. Когда в диаграмме выбираешь линию между двумя таблицами и смотришь ее свойства, то видишь несколько флажков, которыми и определяется, на что эта целостность должна распространяться. Если все флажки снять, то она вообще ни на что распространяться не будет, хотя Foreign key и останется (только без DRI).
Насчет последовательности передачи. Репликация использует агенты, которые запускают задания (как и все прочие задания) по определенному расписанию. В задания можно включить несколько шагов. Можно просто настроить несколько отдельных заданий, установив им временной график такой, что одно задание будет выполняться всегда после другого.
Вот только в промежутке между ними могут внести изменения в таблицы - и все пойдет прахом. Поэтому лучше в DRI снимать галочку "Enforce relationship for replication".
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Replication & foreign keys
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]