Как я могу сохранить схему базы данных SQL в файл?

Я пишу программное приложение на C # .Net, которое подключается к базе данных SQL Server. Мой проект C # находится под контролем версий SVN, но я также хотел бы включить свою схему базы данных в репозиторий SVN. Ответ на мой предыдущий вопрос предложил хранить скрипты для создания базы данных в системе контроля версий. Есть ли способ автоматически генерировать эти сценарии из существующей базы данных?

Я очень новичок в SQL Server, но в студии управления я заметил, что команды SQL для создания таблицы могут быть сгенерированы автоматически, щелкнув правой кнопкой мыши по таблице и выбрав «Script Table As». Есть ли эквивалентная команда, которая работала бы со всей базой данных?


person Eric Anastas    schedule 15.05.2010    source источник


Ответы (4)


Вы можете использовать SQL-DMO или SQL SMO для написания сценария или такой продукт, как APEXSQLScript (если у вас много зависимостей, вы захотите использовать зрелый сторонний инструмент, подобный этому).

person Cade Roux    schedule 15.05.2010

Вы не упомянули версию SQL Server, но в 2008 году (и, возможно, ранее) вы можете щелкнуть базу данных правой кнопкой мыши и выбрать «Задачи» -> «Создать сценарии». Мастер проведет вас через шаги.

person Paul Kearney - pk    schedule 15.05.2010
comment
Другой ответ - щелчок правой кнопкой мыши по базе данных - ›Создать сценарии - сгенерирует только сценарий для создания самой базы данных, но не таблиц в ней. - person Klinger; 15.05.2010
comment
@Klinger - хороший улов. Конечно, моя туманная память не позволила мне пропустить промежуточный пункт меню «задачи», но это то, о чем я имел в виду. Но сейчас вопрос спорный. Я начну самосожжение ... - person Sky Sanders; 15.05.2010

Мы используем сравнение Red-gate, которое позволяет сравнивать (в профессиональной версии) с папкой, которая находится под контролем версий SVN. Упомянутый инструмент Apex, вероятно, имеет аналогичную функцию.

Лично я считаю генератор сценариев SSMS немного неуклюжим и предпочитаю платить за вещи Red Gate.

person gbn    schedule 15.05.2010

У меня возникли проблемы со встроенной генерацией скриптов. В частности, попытка воссоздать базу данных из сгенерированного сценария не удалась из-за того, что объекты были написаны в неправильном порядке. (Все объекты были там, просто потребовалось некоторое изменение порядка.)

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

http://exportsqlscript.codeplex.com/

person mdma    schedule 15.05.2010