Генерация скриптов для создания и удаления объектов SQL Server из SSMS

Довольно часто возникает потребность генерации скриптов для создания или удаления различных объектов MS SQL Server. Например, для создания идентичной по структуре базы данных на другом сервере или для сохранения перед внесением каких-либо серьезных изменений. В SQL Server Management Studio есть мощный строенный механизм генерации скриптов. Для этого достаточно щелкнуть правой клавишей мыши на нужной базе данных и выбрать пункт Tasks -> Generate Scripts для запуска мастера генерации скриптов.

Первую страницу мастера можно пропустить, т.к. она является информационной и лишь кратко описывает процесс, через который предстоит пройти. Вы также можете выбрать опцию не показывать больше эту страницу в дальнейшем.

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

Сразу же мы можем наткнуться на определенные ограничения мастера, если нам необходимо, например, выбрать только объекты из какой-то схемы. Мы можем только вручную указать все объекты этой схемы, но мы не можем просто указать схему.

На следующей странице находится, пожалуй, самое важное – опции генерации скриптов. От них зависит, что в итоге будет сгенерировано для указанных нами раньше объектов. Мы не будем рассматривать возможность публикации сгенерированных скриптов на веб сервис, а ограничимся только сохранением их локальной копии.

Здесь мы можем выбрать путь, куда будет выложен один большой скрипт для всего, либо для каждого отдельного объекта. Также формат файла: Unicode или ANSI. И, несмотря на то, что для сгенерированного скрипта есть возможность не сохранять его в файл, а либо скопировать в буфер обмена, либо открыть его сразу в новом окне SSMS, я не рекомендую использовать эту опцию, т.к. для достаточно больших скриптов это не будет работать, а каким получится скрипт зачастую нельзя предугадать. Однако, если вы заранее знаете, что скрипт получится маленьким, то это вполне оправданно.

Также на этой странице находится самая важная кнопка, Advanced, при нажатии на которую откроется окно различных настроек генерации.

Самые интересные опции, на мой взгляд, значения которых по умолчанию могут вас не строить я выделил красными цифрами.

  1. По умолчанию генерируются только скрипты создания. Есть опция генерации команд на удаления, либо и то и другое одновременно.
  2. Версия SQL Server для которой создается скрипт. Эта опция может быть полезна, если вы хотите создать объекты на более ранней версии сервера, где какие-то возможности не поддерживаются или немного отличаются. В этом случае скрипты будут сгенерированы таким образом, чтобы не вызывать ошибку при их запуске.
  3. Также есть возможность при генерации включить в скрипты команды создания пользователей и их прав на указанные объекты.
  4. Вы можете контролировать, включить ли в скрипт только описание указанных объектов, либо добавить команды вставки данных, либо и то и другое одновременно. Очень полезно, когда есть необходимость для какой-либо таблицы или таблиц сформировать скрипт на вставку данных.
  5. По умолчанию при генерации скриптов таблиц не генерируются команды создания индексов, что также может быть полезно в некоторых случаях.

Конечно, тут еще много других полезных опций, которые могут пригодится по случаю, но это зависит от ситуации и ваших потребностей в генерации скриптов.