Развертывание проекта базы данных Visual Studio 2010 в разных средах - PullRequest
1 голос
/ 29 сентября 2011

У меня есть проект базы данных, который отлично работает для моей локальной базы данных MSSQL 2008.

У него есть скрипт в папке scripts / post-deploy, который вставляет постоянную конфигурацию данных в таблицу настроек и другие таблицы.У меня есть 1 файл для каждой таблицы, например файл Setting.sql для вставки данных в таблицу настроек.

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

Какя могу написать это?По сути, я хотел бы иметь возможность, скажем, 2 файла,

Prod.Setting.sql и Dev.Setting.sql, а VS 2010 будет использовать соответствующий скрипт в зависимости от того, какую базу данных (среду) я развертываю.

1 Ответ

3 голосов
/ 07 октября 2011

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

Создайте две конфигурации решения или используйте Debug и Release, если хотите. Я буду использовать их для примера.

Для каждой конфигурации создайте новый файл .sqlcmdvars.

Database_Release.sqlcmdvars
Database_Debug.sqlcmdvars

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

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

$(DeploymentConfiguration)

И установите его значение в каждом из них как Debug или Release

Тогда в любом из ваших сценариев развертывания до или после вы можете сделать что-то вроде этого:

IF '$(DeploymentConfiguration)' = 'Debug'
BEGIN
PRINT 'Executing Debug deployment'
:r .\Debug\SomeNeededScript.sql
END

IF '$(DeploymentConfiguration)' = 'Release'
BEGIN
PRINT 'Executing Release deployment'
:r .\Release\Anotherscript.sql
END
...