Какими способами мы можем распределять данные каскадом по нескольким каталогам?

#sql-server-2005 #cascade

#sql-server-2005 #каскад

Вопрос:

У меня есть 10 серверов SQL. На каждом сервере есть каталог MASTER_DATA. В этом каталоге есть таблица под названием Employees. Всякий раз, когда происходят изменения в информации о сотруднике, она обновляется на ЦЕНТРАЛЬНОМ сервере в каталоге MASTER_DATA.

Теперь что мне нужно сделать, так это распределить изменения в таблице Employees по всем каталогам MASTER_DATA на всех серверах. После этого те же изменения необходимо каскадировать во все другие каталоги (кроме каталога MASTER_DATA) на всех серверах.

Для этого у меня есть следующие варианты

  1. Пакеты SSIS
  2. Репликация
  3. Обычные старые запросы TSQL

Каков наилучший способ сделать это? Кроме того, существуют ли какие-либо другие способы сделать то же самое?

Ответ №1:

Основываясь на предоставленной вами информации и предполагая, что под «каталогом» вы подразумеваете «базу данных», это кажется идеальным вариантом использования для репликации транзакций.

Ваша ЦЕНТРАЛЬНАЯ база данных.MASTER_DATA будет издателем; все остальные базы данных будут подписчиками.

Из вашего описания неясно, почему требуется второй уровень дублирования — т. Е. Почему для каждой базы данных, отличной от MASTER_DATA, требуется своя собственная копия Employees таблицы — есть ли причина, по которой запросы не должны ссылаться на локальную копию данных MASTER_DATA? Вы могли бы использовать синоним в базах данных, отличных от MASTER_DATA, чтобы избежать необходимости изменять свои запросы.

Комментарии:

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