2010-05-20 4 views
1

Предположим, у меня есть две базы данных SQL Server 2008, A и B. Сначала они были созданы с намерением быть раздельными, но со временем выросли до того, что они имеют постоянные ссылки (в sprocs, views и т. Д.) Друг к другу. Понятно, что они фактически всего две половины одной и той же базы данных.SQL Server 2008 - слияние и слияние баз данных?

Итак, мы рассматриваем возможность их слияния. Кто-нибудь знает, как мы могли бы наилучшим образом выполнить это слияние? У нас довольно много внутренних приложений, которые ссылаются на тех или иных, в том числе на многих клиентов, которые минимизируют время простоя. Чтобы не находить и обновлять все вещи, попадающие в эти базы данных, нас особенно интересует какая-то «сглаживание» базы данных, где приложение может вызывать sproc в базе данных «A» и «A» перенаправления что к новой объединенной базе данных «C», так или иначе. Кто-нибудь имеет опыт или понимание этого типа ситуации?

ответ

0

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

(1) Построить новую составную базу данных. Я бы взял один из существующих двух и добавил в него код другого, а не создал новую (третью) базу данных.

(1a) Вам (предположительно) нужна рутина для создания новой базы данных с нуля.

(1b) Вам понадобилась бы рутина для обновления существующей пары баз данных в форме с одним DB.

(2) Построить пересмотренную «вторую» базу данных. Все в этой базе данных является заполнителем, ссылаясь на коррелированные объекты в пересмотренной «первой» базе данных. Как рекомендует Том Х., синонимы должны хорошо работать для этого (они также доступны в SQL 2005). Взгляды тоже будут работать. Хранимые процедуры должны быть просто обертки, которые называют их аналоги в (новой) первой базе данных.

(3) Тест, тестовый тест.

(4) Вернитесь назад и снова сделайте шаг 3.

(5) Внесите все изменения сразу в существующие системы (поэтому у нас есть шаг 4), по одному окружению за раз. Выполнено правильно и в зависимости от много в вашей системе, возможно, вам даже не придется настраивать, как ваши базы данных будут доступны пользователям или приложениям.

(6) С учетом времени и ресурсов пересмотрены все внешние пользователи и приложения для ссылки на новую/единую базу данных, что в конечном счете умаляет все использование или ссылку на вторую базу данных.

+0

Правильно ли это звучит? 1) Начните с A и B. 2) Создайте базу данных C, как копию A. 3) Создайте и примените (до C) патч 'A-> C', добавив все код B в C, так что C содержит A + B. 4) Создайте базу данных D, содержащую все объекты из B. 5) Создайте и примените (к D) патч 'B-> D', который сводит весь свой код к тонким синонимам/оберткам для объектов в C. 5) Тестирование тестового теста, тестового тестового теста. Повторение. –

+0

6) Обновите A до 'C', используя патч 'A-> C'; это новая единая база данных. Обновите B до 'D', используя патч 'B-> D'; это всего лишь тонкий переадресация на C, для всех приложений, которые все еще совершают вызовы B. 7) В конце концов, обновите все приложения, делающие вызовы, чтобы сделать их непосредственно в A. Входите в автономный режим. –

+0

Как это могло бы сравниться с чем-то вроде ... 1) Создайте базу данных, C. Заполните ее тонкими синонимами/обертками ко всем объектам в A и B. 2) Обновите все приложения, чтобы указать C. 3) В конечном счете, действительно перемещайте каждый объект от A до C и от B до C, как позволяют время/ресурсы, оставляя на своем месте синонимы, указывающие на C. (Или это должно быть сделано все сразу?) Спасибо за все помощь до сих пор! –

0

Поскольку вы используете SQL 2008, вы можете посмотреть на использование SYNONYM, которое, я считаю, может проходить через базы данных (и даже серверы, если необходимо). У меня нет большого опыта с ними, поэтому я боюсь, что не могу дать никаких советов или «ошибок».

Ваша конечная цель состоит в том, чтобы в конечном итоге изменить код доступа, чтобы указать на единую базу данных, а затем избавиться от двух других «фиктивных» БД. Наличие такого перенаправления в долгосрочной перспективе в конечном итоге вызывает проблемы в моем опыте.