#sql-server-2005 #cascade
#sql-server-2005 #каскад
Вопрос:
У меня есть 10 серверов SQL. На каждом сервере есть каталог MASTER_DATA. В этом каталоге есть таблица под названием Employees. Всякий раз, когда происходят изменения в информации о сотруднике, она обновляется на ЦЕНТРАЛЬНОМ сервере в каталоге MASTER_DATA.
Теперь что мне нужно сделать, так это распределить изменения в таблице Employees по всем каталогам MASTER_DATA на всех серверах. После этого те же изменения необходимо каскадировать во все другие каталоги (кроме каталога MASTER_DATA) на всех серверах.
Для этого у меня есть следующие варианты
- Пакеты SSIS
- Репликация
- Обычные старые запросы TSQL
Каков наилучший способ сделать это? Кроме того, существуют ли какие-либо другие способы сделать то же самое?
Ответ №1:
Основываясь на предоставленной вами информации и предполагая, что под «каталогом» вы подразумеваете «базу данных», это кажется идеальным вариантом использования для репликации транзакций.
Ваша ЦЕНТРАЛЬНАЯ база данных.MASTER_DATA будет издателем; все остальные базы данных будут подписчиками.
Из вашего описания неясно, почему требуется второй уровень дублирования — т. Е. Почему для каждой базы данных, отличной от MASTER_DATA, требуется своя собственная копия Employees
таблицы — есть ли причина, по которой запросы не должны ссылаться на локальную копию данных MASTER_DATA? Вы могли бы использовать синоним в базах данных, отличных от MASTER_DATA, чтобы избежать необходимости изменять свои запросы.
Комментарии:
1. Синоним звучит как лучший способ, однако текущая архитектура, которую я обсуждал выше, была реализована давным-давно для повышения производительности каталогов с высоким использованием.