2015-02-13 3 views
0

У нас есть репликация базы данных, где мы реплицируем все таблицы базы данных на несколько производственных серверов.Репликация SQL Server Transactional Replication с объектами с высокой степенью ссылочной базы при отказе от инициализации

В базе данных также отображаются виды, хранимые процедуры, функции и т. Д., Которые вручную развертываются в репликах через TSQL-скрипты.

Теперь, если к публикации добавлена ​​новая таблица, мы должны повторно инициализировать все Подписки, создав новый моментальный снимок и доставим его через Дистрибьютор (который находится на том же сервере, что и публикация). Головная боль начинается, когда агент распространения хочет сбросить таблицу, чтобы впоследствии ее воссоздать, некоторые таблицы ссылаются на представления, на которые также ссылаются другие объекты. Дистрибьютор не может (или не будет) опускать объекты и сталкивается с ошибкой, как Cannot DROP TABLE 'dbo.table' because it is being referenced by object 'thisisafunctionorview'.

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

Для решения этой проблемы мы должны отбросить все функции и представления (всего около 200 объектов) и воссоздать их после того, как был сделан снимок.

Есть ли у кого-то идеи, как мы могли бы изменить концепцию этой репликации, чтобы мы могли изменять объекты и не требовать большого времени простоя (около 2 часов для 6 реплик), чтобы исправить беспорядок из-за ссылок?

Для получения информации: Мы используем MS SQL Server 2008 R2 для всех экземпляров (с Enterprise и Standard Editions). Обновление до SQL Server 2014 планируется в конце этого года для издателя и некоторых подписчиков. Только публикация требует письменного доступа. Обновления схемы базы данных часто развертываются (примерно два раза в месяц), обычно в процедурах есть только изменения, но иногда добавляются/изменяются таблицы, вот почему наша концепция репликации, похоже, разваливается.

Любые предложения приветствуются Заранее спасибо!

С уважением Дэвид

+0

Возможно, вы захотите опубликовать это на http://dba.stackexchange.com/ –

ответ

0

Это звучит странно для меня, потому что у меня есть много хранимых процедур в репликации и нет никаких проблем с изменениями SP. ПРОЦЕДУРА ALTER can будет распространяться по подпискам. Также я не вижу проблем с повторной инициализацией подписки из-за зависимостей объектов. Однако я помню такие проблемы в репликации слиянием, и есть SP для переупорядочения объектов. В большинстве случаев SQL Server хорошо управляет зависимостями. Во-вторых, вы можете добавить \ удалить статьи для транзакционной репликации without re-initialization.

Я думаю, что если вы повторно создадите репликацию в тестовой среде и немного поиграете с ней, вы найдете способ репликации изменений схемы и слишком часто повторной инициализации. Это возможно, но требует определенных усилий.

Смежные вопросы