Как настроить параметры развертывания для сценария поэтапного выпуска проекта базы данных Visual Studio 2010? - PullRequest
7 голосов
/ 19 мая 2010

Я только начал использовать проект базы данных VS2010 для управления выпуском обновления существующей базы данных.

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

Например, у меня есть 10 существующих таблиц, одну из которых я добавляю в новую версию и создаю несколько новых sprocs. Я только хочу, чтобы при развертывании выполнялись сценарии удаления таблицы и создания команд.

Я использую VS2010 Premium.

Есть ли рекомендуемый стандартный подход, которым я мог бы следовать для управления БД в проекте от первоначального создания до добавочных выпусков?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 25 мая 2010

В файле .sqldeployment проекта есть «Всегда заново создавать базу данных». Если снять этот флажок, автоматически генерируется сценарий SQL, который будет постепенно обновлять вашу базу данных, не удаляя ее в первую очередь.

Существует также опция «Генерировать операторы DROP для объектов, которые находятся в целевой базе данных, но отсутствуют в проекте базы данных». Вам нужно будет проверить эту опцию, если вы хотите, чтобы таблицы, хранимые процессы и т. Д. Были удалены, если вы удалили их в проекте базы данных. Это приведет к удалению любой таблицы и т. Д., Которые пользователи могли создать самостоятельно для тестирования, отладки и т. Д.

Чтобы изменить параметры в файле .sqldeployment. Откройте файл в Visual Studio. Либо разверните проект базы данных в обозревателе решений, дважды щелкните файл .sqldeployment (он, вероятно, будет находиться в папке «Свойства» в проекте БД). Или откройте страницу свойств для проекта базы данных и нажмите кнопку «Изменить ...» рядом с «Файл конфигурации развертывания». Установите или снимите флажки для параметров, которые вы хотите использовать при развертывании базы данных.

Я использую VSDBCMD.exe для созданных мной скриптов в один клик. Это работает очень хорошо. VSDBCMD использует файл .sqldeployment - файл .sqldeployment по умолчанию указывается в файле .deploymanifest, но его можно переопределить, указав его в качестве параметра при выполнении VSDBCMD. Кроме того, я считаю, что Visual Studio использует VSDBCMD под прикрытием, когда он развертывает проект базы данных, но я просто предполагаю, что так оно и есть, поскольку функциональность в значительной степени идентична.

4 голосов
/ 19 мая 2010

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

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

Я действительно не был ужасно удовлетворен этим подходом и в итоге продолжал использовать мой «старый подход» ручного кодирования моих сценариев изменений, когда это необходимо, но я очень хочу увидеть, изменилось ли что-нибудь в 2010 году, что делает это немного легче работать. Мне бы очень хотелось увидеть простой API, который делает то, что делает VSDBCMD, чтобы я мог собрать GUI вместе, чтобы упростить обновление целевой (в моем случае, клиентской) базы данных, при этом человек, выполняющий обновление, не должен быть администратором баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...