Консолидация баз данных SQL Server в 1 - PullRequest
3 голосов
/ 13 июля 2011

Мне нужно объединить 20 баз данных с одинаковой структурой в одну базу данных.Я видел этот пост: Консолидация данных из множества различных баз данных в одну с минимальной задержкой

Я не понял всего этого, поэтому позвольте мне спросить так: Есть таблица с первичнойключи, но не имеют sourceID, например:

База данных 1

AgencyID    Name 
1           Apple
2           Microsoft

База данных 2

AgencyID   Name
1          HP
2          Microsoft

Очевидно, что эти две таблицы не могут быть объединены следующим образом,ему нужен дополнительный столбец:

База данных 1

Source     AgencyID    Name 
DB1        1           Apple
DB1        2           Microsoft

База данных 2

Source     AgencyID   Name
DB2        1          HP
DB2        2          Microsoft

Если это правильный способ сделать это, можно ли объединить эти две таблицы водна база данных, подобная этой:

Source     AgencyID    Name 
DB1        1           Apple
DB1        2           Microsoft
DB2        1           HP
DB2        2           Microsoft

... и возможно ли это сделать с помощью репликации транзакций?

Заранее спасибо за ответ, было бы очень полезно, если бы я получилправильный ответ для этого.

Илья

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Если я вас правильно понимаю, вы можете сделать это,

, создав пакет DTS / SSIS. Вот базовое руководство по SSIS .

или прямой запуск SQL, например

 INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
 SELECT CAST('DB1' AS nvarchar(16)), [AgencyID], [Name]
 FROM [SourceDatabase1].dbo.[Agency]

 INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
 SELECT CAST('DB2' AS nvarchar(16)), [AgencyID], [Name]
 FROM [SourceDatabase2].dbo.[Agency]

Затем вызов либо повторяющегося Задания SQL Server с одним Шагом задания и Расписание

Не забудьте подумать о том, как определить, какая строка уже скопирована в целевую базу данных.

1 голос
/ 22 июля 2011

Я решил проблему. Сейчас я использую Транзакционная репликация . В " Свойства публикации> Свойства статьи " Мне нужно установить " Действие, если имя используется " Отметить " Сохранить существующий объект без изменений ". По умолчанию: « Удалить существующий объект и создать новый ». В SQL 2008 даже при изменении схемы таблиц эти изменения применяются к базе данных консолидации.

0 голосов
/ 06 июня 2014

SQL-Hub (http://sql -hub.com ) позволит вам объединить несколько баз данных с одной и той же схемой в одну базу данных. Существует бесплатная лицензия, которая позволит вам делать это из пользовательского интерфейса, хотя вам может потребоваться оплатить лицензию, если вы хотите запланировать автоматический запуск процесса. Его гораздо проще использовать, чем репликацию, хотя и не так эффективно.

...