Можно ли переместить схему в другую базу данных в SQL Server? - PullRequest
0 голосов
/ 03 июля 2019

У нас есть устаревшая база данных с десятками схем, и мы вместо этого собираемся разбить эту базу данных на несколько меньших отдельных баз данных.

Можно ли как-нибудь создать новую базу данных натот же физический сервер, а затем перенести всю схему в новую базу данных?

Наши таблицы выглядят так:

Foo.Table1
Foo.Table2
Foo.Table3
...
Bar.Table1
Bar.Table2
...
Xxx.Table1
Xxx.Table2
...

... и я хочу переместить Foo.* вновая база данных.

Обычно это рекомендуется делать с помощью какого-либо экспорта / импорта для каждой таблицы, но это довольно обременительно для 150+ таблиц в схеме.

Насколько мойтривиальное исследование идет, варианты кажутся следующими:

  • Экспорт / импорт каждой таблицы в отдельности.

  • Резервное копирование всей базы данных, восстановление в другом месте назначенияи удалите все остальное (болезненно, поскольку вся база данных составляет ~ 900 ГБ).

  • Разверните dacpac одиночной схемы в новой базе данных и выполните начальное заполнение кросс-базы данных, иначе:

INSERT INTO newDb.Foo.Table1 SELECT * FROM oldDb.Foo.Table1;
INSERT INTO newDb.Foo.Table2 SELECT * FROM oldDb.Foo.Table2;
INSERT INTO newDb.Foo.Table3 SELECT * FROM oldDb.Foo.Table3;
...

Все эти опции требуют больших усилий ... Есть ли другой подход, который просто переместит всю схему в новую базу данных?

Ответы [ 2 ]

1 голос
/ 03 июля 2019

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

0 голосов
/ 03 июля 2019

Я не знаю ни одного полностью автоматизированного способа, но это можно сделать относительно просто с помощью Excel.

В SSMS вы можете легко использовать "Object Explorer Details " (с несколькими щелчками мыши) схема сценария нескольких таблиц.

С помощью системных представлений (sys.tables, sys.columns и т. д.) и Excel вы сможете сгенерировать INSERT INTO .... SELECT... 'скрипты для всех ваших таблиц в считанные минуты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...