Как я могу сгенерировать скрипт моей базы данных как есть? - PullRequest
13 голосов
/ 29 марта 2011

Моя основная причина для этого - отслеживать изменения схемы базы данных для моего приложения.В SQL Server Management Studio я могу создать сценарий создания, который создает базу данных, но не содержит никаких тестовых данных.В идеале, когда скрипт запускается, он должен УБРАТЬ существующую базу данных (при условии, что она уже существует), а затем воссоздать ее, используя этот новый скрипт, содержащий изменения схемы, и проверить данные с моей машины разработки.

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

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

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

Ответы [ 6 ]

25 голосов
/ 29 марта 2011

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

SQL 2008
Развернуть базы данных
База данных правой кнопкой мыши
Выберите «Задачи»> «Создать сценарии»
Генерировать и Откроется диалоговое окно публикации
. Выберите объекты (например, таблицы, процедуры и т. д.)
Нажмите кнопку Далее в наборе сценариев
Параметры выберите Дополнительные параметры
Под Вообще выберите СЦЕНАРИЙ КАПЛЯ И СОЗДАТЬ - СОЗДАТЬ, СОКРАТИТЬ И СОЗДАТЬ
Типы данных для сценария - схема и Данные
Закрыть Расширенное окно
Выбрать сохранить в файл.

4 голосов
/ 05 сентября 2013

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

Для генерации скриптов запустите:

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

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

schemazen.exe create --server localhost --database db --scriptDir c:\somedir
1 голос
/ 26 августа 2016

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

0 голосов
/ 29 марта 2011

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

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

0 голосов
/ 29 марта 2011

Лично я использую Проект базы данных Microsoft Visual Studio 2010 с репозиторием управления версиями (SVN) для отслеживания изменений в схеме.

0 голосов
/ 29 марта 2011

Попробуйте Мастер публикации баз данных Microsoft SQL Server . Это мощный гибкий инструмент для сценариев схемы / данных с SQL Server.

...