Импорт данных с нескольких SQL-серверов

Мы планируем собирать данные с серверов Microsoft SQL партнеров и импортировать их в наш собственный SQL Server. Часть того, что мы хотим сделать, — это взять все их данные по отдельности, а затем объединить их все вместе, чтобы мы могли создать базовые показатели того, как они работают по сравнению друг с другом. Мне любопытно узнать, какие передовые методы или рекомендации могут быть для достижения этого?

Самый простой подход, который я могу придумать, — настроить их как связанные серверы на нашем SQL Server, а затем написать хранимые процедуры (и автоматизировать расписание с помощью агента SQL Server) для импорта данных из каждого в локальные таблицы. Я также начал искать сторонние системы для этого (например, stackdata), но не вижу тех, которые будут импортировать данные обратно локально, большинство из них, похоже, импортируют данные в решение облачной БД.

Кто-нибудь делал что-то подобное раньше и может помочь нам направить нас в правильном направлении?

Благодарю вас!


person MattC    schedule 20.09.2017    source источник
comment
У них есть кто-то, кто управляет данными, которые вам нужно получить?   -  person Ross Bush    schedule 20.09.2017
comment
Одно из моих предложений заключается в том, чтобы не использовать для этого sql. Подобные вещи я проделывал много раз и через какое-то время в этом появилась небольшая логика. Например, чтобы записать выбранные данные (по тому же условию) в другие таблицы. После этого логики становилось все больше и больше, и поддерживать этот код sql всегда было сложно. Хороший способ, который работает для меня, - написать какой-нибудь сервис Windows на С#. Это будет очень просто для начала. Хорошая абстракция приведет к тому, что не будет проблем с будущим развитием.   -  person Arkadiusz    schedule 20.09.2017
comment
Переход через сервер удаленной связи будет очень медленным по сравнению с восстановлением данных в локальный экземпляр и миграцией оттуда. Будет ли клиент готов отправить вам текущий .BAK?   -  person Ross Bush    schedule 20.09.2017
comment
@Росс, технически это не так. Однако все наши партнеры используют одну и ту же систему, поэтому все данные структурированы одинаково.   -  person MattC    schedule 20.09.2017
comment
Да, .BAK — это хорошее начало — просто восстановите их BAK локально в нескольких базах данных на одном сервере, а затем выполните свои запросы к ним. Это технически наиболее простое решение. Есть множество более сложных решений (репликация, зеркалирование и т.д.), но я не вижу необходимости в этих   -  person Nick.McDermaid    schedule 20.09.2017


Ответы (1)


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

Для сбора данных вы можете использовать пакеты SSIS для прямого подключения к источникам. и запланировать пакеты на SQL ServerAgent

Я избегаю использования связанного сервера с предложениями ETL по многим причинам, но наиболее важными для меня являются:

  • Если удаленный сервер недоступен, весь процесс ETL может быть нарушен.
  • Процесс был бы тесно связан с источником, и если источник изменится, вам нужно будет реконструировать многие вещи.

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

person Maurício Pontalti Neri    schedule 20.09.2017