Скопируйте данные базы данных из многих баз данных в одну. Репликация данных (вроде) - PullRequest
3 голосов
/ 25 января 2010

Это включает в себя репликацию данных, вид:

У нас много сайтов с установленным SQL Express, на каждом сайте есть база данных аудита, в которой есть одна таблица в первой нормальной форме (чтобы упростить жизнь:)

Теперь мне нужно получить эту таблицу с каждого сайта и скопировать ее содержимое (скажем, со значением даты и времени> 01.01.20000, но это, очевидно, изменится) и скопировать ее в большой супер table 'в собственном сервере sql, который также имеет первичный ключ в качестве имени сайта (который необходимо вставить в) и текущий первичный ключ из таблицы SQL Express)

например. Многие базы данных SQL Express со следующими столбцами таблицы

ID , имя определения, тип определения, дата-время, успех, NvarChar1, NvarChar2 и т. Д. И т. Д. И т. Д.

И большой супер стол должен иметь:

SiteName, ID , имя определения, тип определения, DateTime, Success, NvarChar1, NvarChar2 и т. Д. И т. Д. И т. Д.

Где элементы, выделенные полужирным шрифтом, являются первичными ключами.

Существует ли приложение / инструмент / вещь Microsoft (или не MS) для менеджера, уже копирующая все эти данные, или нам нужно написать свою собственную?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 25 января 2010

Вы можете использовать SSIS (который поставляется с SQL Server) для заполнения, он может быть настроен с переменными для изменения строки подключения к различным базам данных. У меня есть один, который проходит по всему списку и выполняет тот же процесс, используя три разных файла от трех разных поставщиков. Вы могли бы что-то похожее циклически проходить по разным базам данных сайта. Поместите весь список базы данных, из которой вы хотите скопировать данные аудита, в таблицу и прокрутите ее, каждый раз меняя строку подключения.

Тем не менее, с какой стати вы хотите одну мега-таблицу аудита на сайт? Если каждая таблица в базе данных заполняет таблицу аудита по мере того, как происходят изменения, то таблица аудита в конечном итоге становится огромной проблемой для производительности. Каждая вставка, обновление и удаление должны попадать в эту таблицу, а затем вы предлагаете добавить экспорт поверх этого. Мне кажется, это гарантированная структура для блокировок, взаимоблокировок и всевозможных мерзостей. Сделайте себе одолжение и ограничьте каждую таблицу аудита таблицей, которую она проверяет.

1 голос
/ 27 января 2010

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

Однако на данный момент вам потребуется реализовать собственную точку расширения IDataLoaderFilter (в Java), чтобы добавить дополнительный столбец. Метаданные будут доступны, потому что ваш SiteName будет external_id.

1 голос
/ 25 января 2010

Что нужно учитывать: Связанные серверы и sp_msforeachdb как часть самостоятельного решения. Репликация SQL Server (от Microsoft) (которая, я считаю, может извлекать данные из SQL Server Express) Службы интеграции SQL Server, которые могут извлекать данные из экземпляров SQL Server Express.

Лично я бы сначала проверил службы интеграции.

Удачи.

...