SQL Server 2008 - слияние баз данных и алиасинг? - PullRequest
1 голос
/ 20 мая 2010

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

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

Ответы [ 2 ]

0 голосов
/ 20 мая 2010

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

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

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

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

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

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

(4) Вернитесь и повторите шаг 3.

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

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

0 голосов
/ 20 мая 2010

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

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

...