Создайте сценарий SQL, который создает базу данных и таблицы


102

У меня есть база данных SQL и таблицы, которые я хотел бы воспроизвести на другом сервере SQL. Я хотел бы создать сценарий SQL, который создает базу данных и таблицы в одном сценарии.

Я могу создать сценарий «Создать» с помощью SQL Management Studio для каждого случая (база данных и таблицы), но я хотел бы знать, будет ли достаточно объединения обоих сценариев «Создать» в один сценарий.

Спасибо.


26
не могли бы вы изменить принятый ответ?
skolima

1
@skolima согласился, принятый ответ (Клейтона) в конечном итоге даст результат, но ответ CJM намного быстрее
elmer007

Ответы:


18

В SQL Server Management Studio вы можете щелкнуть правой кнопкой мыши базу данных, которую вы хотите реплицировать, и выбрать «Script Database as», чтобы инструмент создал соответствующий файл SQL для репликации этой базы данных на другой сервер. Вы можете повторить этот процесс для каждой таблицы, которую хотите создать, а затем объединить файлы в один файл SQL. Не забудьте добавить оператор using после создания базы данных, но до создания любой таблицы.

В более поздних версиях SQL Server вы можете получить это в одном файле в SSMS.

  1. Щелкните базу данных правой кнопкой мыши.
  2. Задачи
  3. Сгенерировать скрипты

Это запустит мастер, в котором вы можете создать скрипт для всей базы данных или только для ее частей. Похоже, что для этого не существует способа T-SQL.

Создание сценариев SQL Server


183
Продолжайте прокручивать ... Метод CJM на 99,99999% лучше
ewitkows

Ответа CJM по-прежнему недостаточно. После применения метода CJM следует применить также метод Shawna Jacobs.
Анджей Мартина

В любом случае для этого есть стандартный SQL для mysql например?
Бенджамин Гудакр,

379

Хотя ответ Клейтона приведет вас туда (в конечном итоге), в SQL2005 / 2008 / R2 / 2012 у вас есть гораздо более простой вариант:

Щелкните правой кнопкой мыши базу данных, выберите, Tasksа затем Generate Scriptsзапустит мастер сценариев. Это позволяет вам создать один скрипт, который может воссоздать полную базу данных, включая таблицы / индексы и ограничения / хранимые процедуры / функции / пользователей / и т. Д. Существует множество параметров, которые можно настроить для настройки вывода, но большинство из них не требует пояснений.

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

Если вы хотите воссоздать данные в базе данных (в виде серии INSERTS), я также рекомендую SSMS Tools Pack (бесплатно для версии SQL 2008, оплачивается для версии SQL 2012).


5
Это отлично, я только что сделал это и сэкономил кучу времени.
Bill Sambrone

@CJM Я думаю, что ПОЧТИ люблю тебя! :-P
Пьеро Альберто

Я точно выполнил эти шаги, но по-прежнему получаю массу ошибок и не могу их исправить. Любая помощь?
user1789573

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

@ user1789573 - как написала Шона Джейкобс - SSMS не заботится о зависимостях (позор команде разработчиков SSMS!), поэтому у вас будет масса ошибок «по замыслу». Следуйте за Шоной Джейкобс, чтобы устранить эту слабость SSMS.
Анджей Мартина

9

Отличное объяснение можно найти здесь: Создать сценарий в SQL Server Management Studio

Предоставлено Али Иссой. Вот что вам нужно сделать:

  1. Щелкните правой кнопкой мыши базу данных (не таблицу) и выберите задачи -> создать сценарии.
  2. Далее -> выберите запрошенную таблицу / таблицы (из выбранных конкретных объектов базы данных)
  3. Далее -> щелкните дополнительно -> типы данных для сценария = схема и данные

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


7

Не уверен, почему SSMS не учитывает порядок выполнения, но это просто не так. Это не проблема для небольших баз данных, но что, если в вашей базе данных 200 объектов? В этом случае порядок выполнения имеет значение, потому что пройти через все это непросто.

Для неупорядоченных скриптов, созданных SSMS, вы можете следовать

а) Выполнить скрипт (какие-то объекты будут вставлены как-то по обыкновению, будут ошибки)

б) Удалите из скрипта все объекты, которые были добавлены в базу данных

c) Вернитесь к a), пока все в конечном итоге не будет выполнено

Альтернативный вариант - использовать сторонний инструмент, такой как ApexSQL Script, или любые другие инструменты, уже упомянутые в этом потоке (пакет инструментов SSMS, Red Gate и другие).

Все это позаботится о зависимостях за вас и сэкономит вам еще больше времени.


1

Да, вы можете добавить столько операторов SQL в один сценарий, сколько захотите. Только одно замечание: порядок имеет значение. Вы не можете ВСТАВИТЬ в таблицу, пока не СОЗДАЕТЕ ее; вы не можете установить внешний ключ, пока не будет вставлен первичный ключ.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.