Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация: последовательность переноса данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
Всем доброго дня!

Есть два сервера SQl Server 2008R2. Между ними настроена репликация "Слиянием", и все работает. Объемы данных (по размеру и количеству строк) гуляют большие + тормознутый инет :)
В БД есть две таблицы, tbl_MassMail и tbl_ContactMails. Вторая таблица по ключу ссылается на первую, то есть tbl_MassMaill является "заголовком", а tbl_ContactMails - деталями.

А теперь суть ситуация:
В цикле (10 итераций, к примеру) в таблицу tbl_MassMail пишем 1 запись и в таблицу tbl_ContactMails 10000 связанных с ней строк.
В конце цикла получим в tbl_MassMail 10 строк, а в tbl_ContactMails - 100000.

Репликация довольно часто первыми начинает нести строки из таблицы tbl_ContactMails (по алфавиту оно что-ли сортирует статьи?), и как результат пачка из 10000 строк не может перекинуться на другой сервер - падает на ограничении ключа. Потом данные дойдут (после синхронизации tbl_MassMail), но время бездарно тратиться на заведомо невыполнимые операции. С учетом тормознутого инета и объемы данных, некоторые данные умудряются простоять в очереди на синхронизацию до 20 минут, что уже критично.

Вопрос, как задать репликации очередность переноса данных? Мол если есть не перенесенные строки в родительской таблице, то и нечего тянуть строки из подчиненных. Или какие еще есть варианты решения проблемы?

П.С.
Прописывать в ключах "not for replication" или отключать ключи совсем очень не хотелось бы...
10 апр 15, 10:58    [17497344]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
IronNail,

выполняйте действия вставки в две таблицы общей транзакцией, у Вас нарушение целостности.
10 апр 15, 11:10    [17497424]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
Транзакция не поможет, так как репликация "слиянием" оперирует исключительно данными (сама в джобах генерирует скрипты для перенос и изменения строк). Вот в репликации "Транзакций" другое дело, там журнал несется в котором четкая последовательность действий (1 к 1, так сказать) но сейчас не о ней.

После четвертого прочтения документации по процедурам:
https://technet.microsoft.com/ru-ru/library/ms174386(v=sql.110).aspx
, нашел параметр @processing_order. Теоретически то что надо, сейчас буду мучать :)

Абы ничего не легло перекрестился на всякий случай, а то в Пасху работать - грех :D
10 апр 15, 11:25    [17497548]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
IronNail
падает на ограничении ключа
Пересоздайте ограничение с опцией not for replication.
10 апр 15, 11:28    [17497576]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
o-o
Guest
IronNail
Абы ничего не легло перекрестился на всякий случай, а то в Пасху работать - грех :D

можно было отпраздновать еще в воскресенье с Папой Римским и работать дальше без угрызений совести
10 апр 15, 11:38    [17497686]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
IronNail,

поможет или нет - покажет практика, попробуйте всё же.
10 апр 15, 11:55    [17497802]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1753
IronNail,

При настройке репликации слиянием есть флаг, который заставляет ее переносить данные по иерархии фильтра
13 апр 15, 09:52    [17506762]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
IronNail
Member

Откуда:
Сообщений: 14
Задать очередность таблиц не получилось...
Выполнение процедуры на одной таблице занимает более 2-х часов, при этом работать с базой становиться невозможно, сплошные локи при любом обращении к БД.
Вышли из ситуации тем, что на ключи навесили флаг "NOT FOR REPLICATION".

две полные недели полет нормальный, жить стало проще.
7 май 15, 12:21    [17612097]     Ответить | Цитировать Сообщить модератору
 Re: Репликация: последовательность переноса данных  [new]
Павел-П
Member

Откуда:
Сообщений: 234
Есть еще вариант просто не создавать FK на стороне реплики.
9 май 15, 10:17    [17621435]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить