У меня есть 8 отдельных машин SQL Server 2008 R2, на каждой из которых размещена 1 база данных. Каждая база данных имеет идентичную структуру таблицы и схему, а также полностью уникальные данные.
Я хотел бы установить сервер отчетов (может быть 2008 или 2012), который объединяет строки из выбранных таблиц на 8 исходных серверах в один экземпляр этих таблиц на сервере отчетов. Это односторонняя репликация (без изменений на сервер отчетов). Мне нужно будет реплицировать изменения из исходных баз данных с относительно низкой задержкой (скажем, 20-30 секунд).
Кроме того, я хотел бы найти методы для достижения этого с минимальным воздействием на исходные серверы, насколько это практически возможно. Сторонние агенты, триггеры или моды схемы на этих серверах сложны в моей среде.
Мои вопросы:
- Каковы перспективные архитектуры и технологии для достижения этой цели?
- Я смотрел на репликацию слиянием SQL Server, но меня беспокоит задержка. Это подходящая технология для этой цели?
- Существуют ли много-к-одному архитектуры для репликации транзакций?
- Стоит ли смотреть репликацию «1 к 1» на 8 баз данных на моем сервере отчетов, а затем какую-нибудь настраиваемую функцию слияния (двухэтапная репликация)?
Спасибо Джон
источник
Ответы:
Вы можете добиться этого с помощью репликации транзакций . Ниже описано, как вы можете это сделать.
Примечание. Для достижения этой цели необходимо слегка изменить схему таблицы, поскольку вы должны однозначно идентифицировать эти строки при репликации на подписчика. В качестве предварительного условия для T-Rep вам нужно иметь таблицы с определенным PK.
Ниже приведен пример таблицы на серверах Publisher, которая находится на всех ваших 8 серверах, которые вы хотите объединить на сервере отчетов.
На сервере подписчика необходимо создать ту же таблицу, но с другим PK, чтобы однозначно идентифицировать строки на подписчике (если этого не произойдет, T-Rep потерпит неудачу с нарушением PK - я предполагаю, что вы не можете изменить структуру PK на живая ПРОДУКЦИЯ, а лучше ее модифицировать у подписчика)
Приведенный ниже скрипт поможет вам настроить T-Rep, просто измените имя базы данных, имя сервера назначения и имя объекта.
Несколько замечаний:
В sp_addsubscription убедитесь, что
@sync_type = N'automatic'
И свойства статьи должны быть установлены на:
Итак, наконец, вы можете объединить строки из всех (в моем случае 3 серверов), как показано ниже:
Итак, в итоге,
Создайте таблицу на подписчике с включенным PK в качестве ServerName.
Создайте репликацию таблиц с параметром @sync_type = N'automatic 'и свойством Article, установленным на «Сохранить существующий объект без изменений».
Запустите агент моментальных снимков.
Проверьте консолидированные данные на подписчика.
источник