У нас есть база данных, которая выросла до 50 ГБ, и мы хотим извлечь определенный набор таблиц (около 20 из них) из этой базы данных и переместить их в новую базу данных. , Все это будет на одном сервере SQL. Таблицы, которые мы хотим извлечь, занимают около 12 ГБ пространства (данные 6 ГБ, индексы 6 ГБ).
Как мы можем переместить таблицы из одной базы данных во вторую, но убедиться, что таблицы, созданные в новой базе данных, являются точной копией оригиналов (индексов, ключей и т. Д.)? В идеале я хочу, чтобы копирование / вставка выполнялась в среде SQL Server Management Studio, но я знаю, что этого не существует, поэтому какие у меня есть варианты?
Если вы перемещаете таблицы в полностью новую базу данных только из-за роста, возможно, вам лучше рассмотреть возможность использования файловых групп в существующей базе данных. В будущем будет гораздо меньше головной боли, чем попытка иметь дело с двумя отдельными базами данных.
EDIT
Как я упоминал в своих комментариях ниже, если вам действительно нужна новая база данных, в зависимости от общего количества задействованных таблиц может быть проще восстановить резервную копию базы данных под новым именем и удалить столы, которые вам не нужны.
Я также нашел это потенциальное решение с помощью SQL Server Management Studio. Вы можете создать сценарии для определенных таблиц для перемещения, а затем экспортировать данные с помощью мастера создания сценариев и мастера импорта/экспорта в SQL Server Management Studio. Затем в новой базе данных вы запустите сценарии для создания всех объектов, а затем импортируете данные.Вероятно, мы собираемся использовать метод резервного копирования/восстановления, как описано в ответе @Joe Stefanelli, но я нашел этот метод и хотел опубликовать его, чтобы другие могли его увидеть.
Чтобы сгенерировать сценарий sql для объектов:
Чтобы экспортировать данные из таблиц:
Затем создайте новую базу данных, запустите сценарии для создания всех объектов, а затем импортируйте данные.
Если вам нравятся службы SSIS или они у вас есть, вы можете исследовать это с помощью компонента «Задача копирования объектов SQL».
SELECT *
INTO new_table_name [IN new database]
FROM old_tablename