Репликация SQL Server 2008 (предотвращение повторной инициализации)

Я пытаюсь определить, есть ли лучший способ справиться с репликацией, чем тот, который мы делаем сейчас.

По сути, мы пытаемся определить 2 вещи:

  1. Есть ли способ добавить существующий столбец из таблицы в репликацию без повторной инициализации всей публикации
  2. Можете ли вы просто выбрать конкретную статью для повторной инициализации вместо всех статей в публикации?

(Я немного новичок в репликации ... пытаюсь набрать скорость, поэтому прошу прощения, если моя терминология не имеет смысла)

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

Любые идеи очень приветствуются.

Обновить

Когда мы пытаемся добавить колонку к статье, мы получаем сообщение:

Вы изменили одно или несколько свойств, требующих повторной инициализации всех подписок. Сохранение этих изменений отмечает, что каждая подписка, поддерживающая автоматическую повторную инициализацию, будет повторно инициализирована из моментального снимка при следующем запуске агента распространителя. Вы должны запустить агент моментальных снимков, чтобы создать моментальный снимок.

Мы хотим избежать повторной инициализации всех подписок ... мы используем репликацию транзакций ... снова мы хотим добавить существующий столбец к существующей публикации без необходимости повторной инициализации всех подписок.


person Chris Klepeis    schedule 25.11.2009    source источник


Ответы (1)


Какая репликация? Снимок, слияние, трансаситональный, одноранговый?

1) Да. См. Внесение изменений схемы в базы данных публикаций:

  • Чтобы добавить новый столбец в таблицу и включить этот столбец в существующую публикацию, выполните ALTER TABLE ADD. По умолчанию столбец реплицируется на всех подписчиков. Столбец должен допускать значения NULL или включать ограничение по умолчанию.
  • Чтобы включить существующий столбец в существующую публикацию, используйте sp_articlecolumn (Transact-SQL), sp_mergearticlecolumn (Transact-SQL) или диалоговое окно Свойства публикации.

2) Это зависит от типа репликации. См. Повторная инициализация подписки:

Повторная инициализация подписки включает применение нового моментального снимка одной или нескольких статей к одному или нескольким подписчикам: репликация транзакций и моментальных снимков позволяет повторно инициализировать отдельные статьи; репликация слиянием требует повторной инициализации всех статей.

person Remus Rusanu    schedule 25.11.2009
comment
Согласно этому msdn.microsoft.com/en-us/library/ms152745.aspx и процедурам sp_articlecolumn, и sp_mergearticlecolumn требуется новый снимок состояния и повторная инициализация подписок. - person Chris Klepeis; 27.11.2009
comment
В предоставленной вами ссылке комментарии к процедурам sp_articlecolumn и sp_mergearticlecolumn относятся к изменению фильтров, а не к изменениям схемы. Согласно msdn.microsoft.com/en-us/library/ms151870.aspx изменения схемы распространяются постепенно без необходимости повторной инициализации. Вы должны протестировать и подтвердить. - person Remus Rusanu; 30.11.2009
comment
Изменения схемы сработали для нас, однако проблема, которую я сейчас пытаюсь проверить, - это взять существующего издателя, существующую опубликованную статью и добавить существующий столбец к этой статье. Я протестировал его с помощью мастера и отслеживал статус моментального снимка и дистрибьютора в истории подписчиков. Я бы надеялся, что он сгенерирует только снимок для статьи в изменяемой публикации, но в деталях я вижу то, что он регенерировал снимок для каждой статьи в публикации и протолкнул его через распространение. - person Chris Klepeis; 30.11.2009
comment
Так что мне интересно, можно ли это сделать или нет ... В свое время я делал несколько хаков репликации, но так и не нашел хорошего решения этой проблемы. Лучшее, что я смог сделать на сегодняшний день, - это ограничить количество статей в публикации, чтобы, если мне придется повторно инициализировать, она была ограничена этой группой. Это лишь усложняет работу, поскольку в итоге у меня получается 30-40 публикаций, что создает множество рабочих мест и многочисленные системные процессы. - person Chris Klepeis; 30.11.2009
comment
Я не хочу углубляться в ответы на тему репликации, так как я не эксперт. Вы можете попробовать kendalvandyke.blogspot.com, он действительно эксперт по репликации. - person Remus Rusanu; 30.11.2009