SQL Server 2008: копирование содержимого всех таблиц из одной базы данных в другую базу данных - PullRequest
1 голос
/ 27 октября 2010

У меня есть две базы данных с той же схемой.Мне нужно скопировать содержимое всех таблиц из одной базы данных в другую базу данных.Каков наилучший способ сделать это?Есть около 200 таблиц.У меня есть ssms.

Ответы [ 5 ]

3 голосов
/ 27 октября 2010

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

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

~~~~~~~~ Добавлены скриншоты ~~~~~~~~~~~~~~

Откройте студию управления и подключитесь, затем перейдите в резервную базу данных из меню «Задачи»:

alt text

Затем нажмите кнопку OK, чтобы создать резервную копию базы данных (обратите внимание, что выбор другого каталога резервного копирования, такого как C: \, может быть плохой идеей, так как он не «используется» при попытке восстановить его позже):

alt text

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

alt text

Выберите первую базу данных из списка или найдите файл для резервного копирования:

alt text

Может потребоваться установить этот флажок на вкладке параметров при выполнении восстановления существующих данных:

alt text

Нажмите OK, и оно должно работать.

2 голосов
/ 27 октября 2010

Не тратя $, вы можете использовать синтаксис SELECT ... INTO ... - при условии, что таблица, указанная в предложении INTO, еще не существует в целевой базе данных:

SELECT *
  INTO new_db.dbo.table
  FROM old_db.dbo.table

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

Что касается работы с ~ 200 таблицами, вам нужно использовать динамический SQL для создания оператора, потому что вы не можете предоставить имя таблицы в качестве переменной в динамическом SQL.Список таблиц может быть из SYS.TABLES или INFORMATION_SCHEMA.TABLES

2 голосов
/ 27 октября 2010

Вы можете использовать мастер экспорта в SSMS.Щелкните правой кнопкой мыши исходную базу данных, выберите «Задачи / Экспорт данных» и следуйте инструкциям.Немного скучно на 200 столов, но бесплатно.

1 голос
/ 27 октября 2010

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

http://www.red -gate.com / продукция / SQL_Data_Compare /

1 голос
/ 27 октября 2010

Получить себе Red-Gate Сравнение данных SQL - лучший инструмент для работы, руки вниз.

Обновление: , если вы не можете или нетВы хотите потратить деньги, но вместо этого хотите потратить много времени, вы, конечно, можете сделать что-то подобное для каждой таблицы:

INSERT INTO TargetDatabase.dbo.YourTable1(list of fields)
   SELECT (list of fields) FROM SourceDatabase.dbo.YourTable1

, а затем повторить это для остальных 199 таблиц.

...