Перенос данных и схемы из одной базы данных в другую по одной таблице за раз

Надеюсь, вы все мне поможете в этой ситуации. Мой босс создал совершенно новую базу данных, и он хочет, чтобы несколько старых таблиц были в новой базе данных. Мой вопрос: как мне перенести данные и схему из старой базы данных в новую базу данных, не удаляя таблицы в старой базе данных? Вот мои две базы данных: WTS-SQL-DEV = это старая база данных: WTS-Business = это новая база данных

Дополнительная информация из комментария:

Я могу получить доступ к обеим базам данных на одном компьютере. Я нашел видео на YouTube, как перенести стол и структуру. Мне не хватало данных.


person kliebwatchtower    schedule 08.06.2016    source источник
comment
О, я запускаю Microsoft SQL Server 2016   -  person kliebwatchtower    schedule 08.06.2016
comment
Сделайте полную резервную копию старой БД. Скопируйте на новый компьютер.   -  person jarlh    schedule 08.06.2016
comment
Если у вас есть обе базы данных на одном сервере или, по крайней мере, на связанном сервере, то вставка таких данных будет легкой задачей. Дайте нам знать немного больше об этом, можете ли вы получить доступ к обеим базам данных с одной и той же машины?   -  person Rich Benner    schedule 08.06.2016
comment
Я могу получить доступ к обеим базам данных на одном компьютере. Я нашел видео на YouTube, как перенести стол и структуру. Мне не хватало данных.   -  person kliebwatchtower    schedule 08.06.2016


Ответы (3)


Уже два отличных ответа.

Другой вариант — щелкнуть правой кнопкой мыши базу данных и выбрать «Задачи» > «Экспорт данных».

Это запустит мастер импорта/экспорта. Вы можете определить исходные/целевые серверы/базы данных и объекты и скопировать все.

https://msdn.microsoft.com/en-us/library/ms140052.aspx

person Dave Cullum    schedule 08.06.2016
comment
Я получил данные через импортера/экспортера. Это было просто. Есть ли простой способ включить все дополнительные вещи, такие как ограничения и тому подобное? - person kliebwatchtower; 08.06.2016
comment
Вероятно, они должны быть написаны по сценарию. Щелкните правой кнопкой мыши БД › Задачи › Создать сценарии. В разделе «Установить параметры сценариев» нажмите «Дополнительно», и внизу вы можете включить сценарии ограничений/ключей/индексов/триггеров/и т. д. - person Dave Cullum; 08.06.2016

  1. Сделайте резервную копию базы данных

введите здесь описание изображения

введите здесь описание изображения

  1. На новой машине восстановить базу

введите здесь описание изображения

введите здесь описание изображения

person Ashish Rajput    schedule 08.06.2016

Вы упомянули, что две базы данных находятся на одном компьютере, и что вы выяснили, как получить схему

(Я использую Tasks - Create Scripts из контекстного меню, вызываемого правой кнопкой мыши в базе данных, и генерирую сценарии, выбирая отдельные таблицы и сохраняя их в новом окне запроса... тогда это так же просто, как использовать [new_db] поверх каждого созданного сценария, и объекты будут созданы в новой базе данных, где [new_db] — имя вашей новой базы данных.).

Поскольку таблицы имеют одинаковую структуру, для вставки данных после создания таблиц в новой БД используется оператор insert select. Включите identity insert, если есть (как и должно быть) автоматически сгенерированный столбец первичного ключа. Вставьте данные. Затем отключите identity insert.

-- Note: Identity_Insert is required if there is an identity column present
-- Otherwise those two lines can be removed/commented out
Use [new_db]
Set IDENTITY_INSERT [table_name] On 
Insert Into [table_name] 
-- Note 2: Default schema is [dbo], but technically, it is [db].[schema].[table]
Select * From [old_db].[dbo].[table_name]
Set IDENTITY_INSERT [table_name] Off 

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

person Dmitriy Khaykin    schedule 08.06.2016
comment
Используйте [WTS-Business] Установите IDENTITY_INSERT [dbo].[WTS-Expense-RecurringCharges] При вставке в [dbo].[WTS-Expense-RecurringCharges] Выберите * From [WTS-SQL-DEV].[dbo].[WTS -Expense-RecurringCharges] Set IDENTITY_INSERT [dbo].[WTS-Expense-RecurringCharges] Off Сообщение 40515, уровень 15, состояние 1, строка 30 Ссылка на базу данных и/или имя сервера в 'WTS-SQL-DEV.dbo.WTS- Expense-RecurringCharges не поддерживается в этой версии SQL Server. Я пытался следовать вашему примеру, это то, что я вижу, когда я извиняюсь - person kliebwatchtower; 08.06.2016
comment
@kliebwatchtower Похоже, это ограничение SQL 2016 (cross database transaction, когда две базы данных находятся в одном экземпляре, не разрешены ... Я думаю, что ответ @JiggsJedi может быть подходящим способом. - person Dmitriy Khaykin; 08.06.2016