Как я могу создать script моей базы данных, как есть?

Моей основной причиной этого является отслеживание изменений схемы базы данных для моего приложения. В SQL Server Management Studio я могу сгенерировать создание script, которое создает базу данных, но не содержит никаких тестовых данных. В идеале, когда запускается script, он должен DROP существующей базы данных (предположив, что он уже существует), а затем воссоздает его с помощью этой новой script, содержащей изменения схемы и тестовые данные с моей машины разработки.

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

Я пробовал использовать функции импорта/экспорта, но это не хорошо, потому что похоже, что он не копирует хранимые процедуры. Плюс было бы неплохо иметь script, поэтому я могу отслеживать изменения схемы с помощью меркуриального.

Я использую SQL Server Express 2008 R2 вместе с SQL Server Management Studio.

Ответ 1

Вы не указали, какая версия SQL Server, но в SQL 2008 это очень просто

SQL 2008
 Развернуть базы данных
 База данных правой кнопкой мыши
Выберите "Задачи" > "Сгенерировать скрипты"
 Генерировать и  Откроется диалоговое окно публикации
Выберите  объекты (т.е. таблицы, procs и т.д.)
 Нажмите "Далее" в "Сценарии установки"
 Опции выберите" Дополнительные параметры "
 Общие выберите SCRIPT DROP AND  CREATE - SCRIPT DROP AND CREATE
  Типы данных SCRIPT - схема и  Данные
Закрыть расширенное окно
Выберите  сохранить в файл.

Ответ 2

Я написал утилиту командной строки с открытым исходным кодом с именем SchemaZen, которая делает это. Это намного быстрее, чем скрипты из студии управления, и выход - более дружественный к версии. Он поддерживает сценарии как схемы, так и данных.

Для запуска запуска скриптов:

schemazen.exe script --server localhost --database db --scriptDir c:\somedir

Затем для воссоздания базы данных из запуска скриптов:

schemazen.exe create --server localhost --database db --scriptDir c:\somedir

Ответ 3

Следите за различием в настройке базы данных. Если вы разрабатываете базу данных с нечувствительным к регистру сопоставлением и пытаетесь запустить сценарии, созданные SSMS, в качестве базы данных с сортировкой по регистру, тогда ошибки в случае будут нарушать сценарии.

Ответ 6

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

лучший способ - восстановить резервную копию при необходимости, я не знаю, как это сделать с помощью script!