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

Откуда: Спб
Сообщений: 105
История такая...
Периодически останавливается репликация с ошибкой The schema at the Publisher ... does not match the schema at the Subscriber. после модификации таблицы под репликой.

В sysmergeschemachange вижу скрипт, который оно пытается выполнить, но... не может. В то же время, в таблице sysmergesubscriptions версия schemachange уже поменялась и новый гуид для schemaguid сгенерён.
Естественно, при попытке рестартануть агента натыкаемся на ошибку выше, ибо версии то не совпали.

При этом, если удалить скрипт из sysmergeschemachange и уровнять данные в sysmergesubscriptions, то всё запускается. НО. Есть одно НО: схемы таблицы на паблишере и на сабскрайбере уже отличаются, и если вставить запись, то система логично приходит в ступор: например на сабскрайбере то такого поля нет!

Вопрос - как же мне заставить прокачаться на сабскрайбер этот скрипт? И почему данные в таблице sysmergesubscriptions меняются ДО прокачки данных по всем сабскрайберам?

Ну или просто совет, как правильнее быть в такой ситуации? Вариант полной реинициализации не рассматривается - систему останавливать нельзя, а время прокачки снапшота несколько часов.
1 авг 16, 12:46    [19481476]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Skiffspb
В sysmergeschemachange вижу скрипт, который оно пытается выполнить, но... не может.
Прямо так и говорит человеческим голосом: не могу, мол?
1 авг 16, 13:10    [19481609]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
invm,

Да, не прав. Не говорит. Но и не выполняет его.
Т.е. вижу запись вида Add Column в sysmergeschemachange на паблишере, но на сабскрайбере такого поля не добавилось.

При этом, на паблишере версия и гуид в sysmergesubscriptions уже поменялась. И при следующем "проходе" агента, реплика благополучно падает по несовпадению.
1 авг 16, 13:20    [19481656]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Проверьте включена ли для публикации опция Replicate DDL.
1 авг 16, 13:27    [19481688]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
Ой. Забыл указать, на чём сие происходит.
MS SQL 2008r2. Репликация типа Push.

Но в общем-то подобное наблюдал и на 2008-м.

Сейчас лечение выглядит так:
1) Если поле прокачалось:
Останавливаю агента, удаляю новые скрипты из sysmergeschemachange старше конфликтной версии, уравниваю гуиды и версии паблишера согласно данным сабскрайбера в sysmergesubscriptions. Запускаю.

2) Если поле не прокачалось, но данные в таблицу ещё не вставляли:
Удаляю поле, далее см п1

3) Если п2, но данные уже вставили:
Совсем плохо. Удаление таблицы из реплики, генерация снапшота, затем п2. Долго, но не вызывает остановку юзеров на сабскрайбере.

Но при этом проблема остаётся, снимается только острый синдром остановки реплики. Данные изменения схем таблиц на сабскрайбер по прежнему не прокачиваются. Приходится выкраивать выходной и таки делать полную реинициализацию. Не хорошо.

Вопрос - почему данные не прокачиваются и не выполняются сабскрайбером? И как правильнее быть?
1 авг 16, 13:33    [19481725]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
invm,

Да, включена. Более того - отлично работает. До какого-то определённого момента. Но какого - мне не ясно.
1 авг 16, 13:39    [19481777]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Покажите результат select @@version
1 авг 16, 13:47    [19481831]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
invm,

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
1 авг 16, 13:49    [19481853]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Skiffspb
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1
Уже почти год как SP3 вышел, а вас все RTM...
1 авг 16, 13:53    [19481871]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
invm,

Эм... Не так то просто у нас накатить сервиспак... Тем более на паблишер...
Но, на самом деле, эту проблему встречал и на 2008-м. И на сцепке 2008->2005.

Хуже всего то, что база регулярно модифицируется. В результате эта проблема возникает примерно каждые пол года.
1 авг 16, 13:59    [19481916]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Skiffspb
Эм... Не так то просто у нас накатить сервиспак... Тем более на паблишер...
Тогда напишите джоб, который будет отслеживать непримененные изменения схемы и накатывать их на подписчиков.
1 авг 16, 14:21    [19482066]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
Skiffspb
Member

Откуда: Спб
Сообщений: 105
invm,

Вот. Очень интересно - как форсировать это? Не подскажите пример скрипта?
1 авг 16, 14:26    [19482094]     Ответить | Цитировать Сообщить модератору
 Re: Merge Replication, принудительная прокачка скрипта из sysmergeschemachange  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Skiffspb,

Отказываетесь от штатного механизма Replicate DDL и
- либо применяете изменения схемы сразу на издателе и подписчиках
- либо делаете собственный механизм отслеживания изменений схемы с помощью DDL-триггера
1 авг 16, 15:18    [19482479]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить